我正在将旧项目升级到python / django的最新版本,并且自定义模板标签出现问题。
模板标签定义:
from django import template
register = template.Library()
def my_tag(*args) -> str:
""" returns html code """
register.simple_tag(lambda *x: my_tag("hello world", *x), name='my_tag')
标签使用示例:
{% my_tag "this no longer works, this autoescapes my code" %}
如何修改我的标签定义以防止自动转义,这样我就不必修改模板了:
{% autoescape off %}{% my_tag "workaround, this doesn't autoescape html" %}{% endautoescape %}
答案 0 :(得分:1)
您可以使用mark_safe
方法标记结果安全:
from django.utils.html import mark_safe
def my_tag(*args) -> str:
return mark_safe(result)
答案 1 :(得分:0)
我无法向 @neverwalkaloner 的响应添加评论,但在最新版本的 Django 中,mark_safe
函数已移至 django.utils.safestring
。
现在正确的代码如下所示:
from django.utils.safestring import mark_safe
def my_tag(*args) -> str:
return mark_safe(result)