这是我的Python Django自定义模板标记代码
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)
现在我收到错误
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'
这适用于我的开发服务器应用程序,但在生产服务器中上传相同代码时无效。
请指导我。
答案 0 :(得分:26)
尽管这个问题已经存在了几年,但最近人们可能会再次看到这个错误,但出于不同的原因。再次出现错误:
AttributeError: 'Library' object has no attribute 'assignment_tag'
升级到Django 2.0后,您可能会看到此错误。这是因为assignment_tag
was deprecated in Django 1.9,并在Django 2.0中被删除:
Django 1.4添加了
assignment_tag
帮助程序,以便于创建将结果存储在模板变量中的模板标记。simple_tag()
助手已经获得了同样的能力,使assignment_tag
过时了。使用assignment_tag
的标记应更新为使用simple_tag
。
请注意,simple_tag
的行为与Django 1.8中的assignment_tag
相似但不相同。
答案 1 :(得分:1)
在软件包social_widgets,Python 3.7和Django 2.2中也遇到了同样的错误。将social_widgets.py中的assignment_tag更改为simple_tag可以为我解决问题。
答案 2 :(得分:0)
在升级到Django 2时就遇到了这个问题。问题在django-debug-toolbar
中出现,但实际上已通过将django-webpack-loader
更新到最新版本而得到纠正。