如何将注册的过滤器从一个 Django 视图导入到另一个视图?



我有一个包含多个模块的 Django 项目。 我想重用我创建的过滤器。

例如代码:主/视图.py

from django.template.defaulttags import register
@register.filter
def get_item(dictionary, key):
return dictionary.get(key)
@register.filter
def get_range(value):
return range(value)

(如何(我可以在辅助/视图中导入和使用这些过滤器(没有剪切和粘贴(.py吗?

通常您不会views.py中定义标签,而是在名为templatetags的目录中定义标签。实际上,项目树应如下所示:

app/
templatetags/
__init__.py
tagname.py
__init__.py
models.py
urls.py
views.py

然后,您可以在app/templatetags/tagname.py中定义模板标签和过滤器:

# app/templatetags/tagname.py
from django import template
register = template.Library()
@register.filter
def get_item(dictionary, key):
return dictionary.get(key)
@register.filter
def get_range(value):
return range(value)

然后,您可以使用{% load … %}加载模板标签和过滤器:

{% loadtagname%}
{{ mydict|get_item:mykey }}

最新更新