Python Django custom template tags register.assign

2020-08-14 16:01发布

问题:

This is my Code for Python Django custom template tags

from django import template
from ipc.declarations.models import MainDeclaration
from django.shortcuts import get_object_or_404

register = template.Library()


def section_settings(declarationId,user):
    declaration = get_object_or_404(MainDeclaration, pk=declarationId, user=user)
    businessInfo = declaration.GetOrCreateBusinessInfo()
    sections = declaration.GetSections()

    return sections

register.assignment_tag(section_settings)

Now i am getting a error

register.assignment_tag(section_settings) [Thu Jan 09 06:50:44 2014] [error] [client 127.0.0.1] AttributeError: 'Library' object has no attribute 'assignment_tag'

This works fine with my development server application , but not working while uploading the same code in Production server.

Please guide me.

回答1:

Even though this question is a few years old, people recently may be seeing this error again, but for a different reason. Here's the error again:

AttributeError: 'Library' object has no attribute 'assignment_tag'

You may be seeing this error after upgrading to Django 2.0. This is because assignment_tag was deprecated in Django 1.9, and removed in Django 2.0:

Django 1.4 added the assignment_tag helper to ease the creation of template tags that store results in a template variable. The simple_tag() helper has gained this same ability, making the assignment_tag obsolete. Tags that use assignment_tag should be updated to use simple_tag.

Note that the behaviour of simple_tag is similar but not identical to assignment_tag in Django 1.8.



回答2:

Just got this same error with package social_widgets, Python 3.7 and Django 2.2. Changing assignment_tag to simple_tag in social_widgets.py solved the problem for me.



回答3:

Just ran into this during an upgrade to Django 2. The problem showed up in django-debug-toolbar but was actually corrected by updating django-webpack-loader to the latest version.