在django

时间:2017-09-08 12:23:08

标签: python django

我正在将旧项目升级到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 %}

2 个答案:

答案 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)