【问题标题】:Django. Double-quoted string double-quoted second time姜戈。双引号字符串第二次双引号
【发布时间】:2016-05-27 09:15:57
【问题描述】:

我写了这个简单的标签:

@register.simple_tag(name='is_active', takes_context=True)
def is_active(context, url_name):
    if reverse(url_name) == context.request.path:
        return 'class="active"'
    return ''

在模板中:

 <li {% is_active 'home_page' %}>

在开发服务器上呈现如下:

<li class="active">

但在使用 UWSGI 的生产服务器上,它会使用重复的双引号呈现:

<li class=""active"">

UPD: Firebug 将 &quot 渲染为“。 其实是这样的:

<li class="&quot;active&quot;">

这是 django 测试服务器中的错误吗? 我怎样才能摆脱这种转变?

【问题讨论】:

    标签: python-3.x django-templates


    【解决方案1】:

    来自 django 文档simple tags

    与其他标记实用程序不同,如果模板上下文处于自动转义模式,simple_tag 将通过 conditional_escape() 传递其输出,以确保正确的 HTML 并保护您免受 XSS 漏洞的侵害。

    如果不需要额外的转义,如果您绝对确定您的代码不包含 XSS 漏洞,则需要使用 mark_safe()。对于构建小型 HTML sn-ps,强烈建议使用 format_html() 而不是 mark_safe()。

    代码:

    return format_html('class="active"')
    

    UPD。这不是 django 中的错误,这是我的错误。我在 Django 1.8.7 本地开发,但在服务器上 django 已更新到 1.9.2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      相关资源
      最近更新 更多