gpt4 book ai didi

django - mark_safe 不起作用/仍在 simple_tag 中转义

转载 作者:行者123 更新时间:2023-12-02 00:48:20 24 4
gpt4 key购买 nike

我使用的是 Django 1.3,我有一个 simple_tag,我需要返回一些未转义的 HTML,无论我做什么,它仍然会将我的 & 转义为 &和我的|至 %7C。

from django import template
from django.template import loader, Context
from django.utils.safestring import mark_safe

register = template.Library()

@register.simple_tag()
def show_stuff(arg1=None, arg2=None, arg3='someconstant'):

# Do some stuff

if someconstant == 'somevalue':
template_name = 'template1.html'
else:
template_name = 'template2.html'

template = loader.get_template(template_name)
html = template.render(Context( {'myvar': myvar,} ))
html = mark_safe(html)
print type(html)
return html

打印语句揭示了

<class 'django.utils.safestring.SafeUnicode'>

根据我的理解,这不应该被转义。我在模板中调用标签,如下所示:

{% show_stuff 'arg1' 'arg2' 'arg3' %}

非常感谢您的帮助。

更新:尝试了下面评论中的以下内容。没有返回错误,但仍然转义 HTML:

    ...
template = loader.get_template(template_name)
html = template.render(Context( {'myvar': myvar,} ))
html = mark_safe(html)
print type(html)
return html
show_stuff().is_safe=True

还尝试将 template1.html 和 template2.html 的内容包装在

{% autoescape off %}
template html contents with & and |
{% endautoescape %}

并用自动转义标签包装 templatetag 调用本身。没有成功。

最佳答案

旧线程,但我最近遇到了同样的问题。我让它在 python 3.6 上工作。将简单标记中的值分配给变量txt,并使用模板标记“{{”输出txt,并向txt添加安全过滤器。

{% get_contentvalue user "htmlabout" as txt %}
{{txt|safe}}

关于django - mark_safe 不起作用/仍在 simple_tag 中转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11675804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com