我有这个项目:

app/
app/Items/
app/Management/
...


Management中,我有templatetags,在这里我有整个项目的标签。

app/Management/templatetags/main_filters.py
app/Management/templatetags/__init__.py


在此文件中,我有:

from django import template

register = template.Library()

@register.filter(name='createmenu')
def createmenu(value):
...


然后在html模板中,我有:

{%load main_filters%}
...
{{dataList|createmenu}}
...


和settings.py我已经进入INSTALLED_APPS:

...
"Management.templatetags",
...


最后我总是遇到下一个错误:

'main_filters' is not a valid tag library:
Template library main_filters not found, tried django.templatetags.main_filters,
django.contrib.staticfiles.templatetags.main_filters,
django.contrib.admin.templatetags.main_filters


我试过将它(./Management/templatetags Folder)放在文件夹ITEMS中,并在settings.py中用Items.templatetags进行了更改,并且可以使用。怎么了?

提前致谢。

最佳答案

您可能需要在INSTALLED_APPS中使用“管理”而不是“ Management.templatetags”。只要调用templatetags,就会自动加载已安装应用程序{% load %}中的模块。

此外,该错误表明仅检查了三个路径


  
    
      ...尝试过django.templatetags.main_filters,
      django.contrib.staticfiles.templatetags.main_filters,
      django.contrib.admin.templatetags.main_filters
    
  


然后我们可以得出结论,Management.templatetags.main_filters没有得到检查,通常有以下几个原因:


__init__.py目录中缺少templatetags。你有一个。
Management未正确安装。案子。
奇怪的导入问题...幸运的是没有=)

关于python - Django标签/过滤器和模板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15636313/

10-11 20:12