首页 > 解决方案 > django 中的模板标签与自定义模板标签和过滤器

问题描述

像 simple_tag 这样的模板标签与模板标签标签参考有什么区别?. 为了更好地表达我的问题,是templatetag用于自定义模板标签和过滤器的目的还是完全用于其他目的?

标签: django

解决方案


前者 templatetag用于创建可以在模板中加载和调用的自定义函数。当您有一个需要执行的常见任务时,这很有用,例如,当只给定一个命名空间时,生成一个包含查询字符串的 url:

from django import template
from django.urls import reverse
from urllib.parse import urlencode

register = template.Library()

@register.simple_tag(takes_context=True)
def url_qs(context, namespace):
    url = reverse(namespace)
    return url + '?' + urlencode(context['querystring'])

后者 templatetag用于转义 Django 模板引擎将解释为特殊字符的符号,例如。双括号{{。这个版本的 templatetag 几乎没用,因为你可以只使用HTML 转义码

例如,如果你想要双括号{{,使用 templatetag 你必须这样做:

{% templatetag openvariable %}

或使用转义码:

{{

推荐阅读