【问题标题】:Django 2.1 : Render JSONresponse to template, byte string doesn't work with javascriptDjango 2.1:将 JSONresponse 渲染到模板,字节字符串不适用于 javascript
【发布时间】:2020-03-03 17:58:08
【问题描述】:

在视图中:

response = JsonResponse(available_lessons, safe=False)

在模板中:

var available_lessons_json = {{available_lessons_json.content|safe}}

在我的源 js 文件中我看到:

var available_lessons_json = b'{"courses": {"courseName": "Everyday English", "lessons": ["Phrasal Verbs I", "Phrasal Verbs II", "Phrasal Verbs III"]}}'

这给了我错误“Uncaught SyntaxError: Unexpected string”

【问题讨论】:

    标签: json django python-3.x


    【解决方案1】:

    如果你想用你的数据来渲染你的模板,你应该使用render函数而不是JsonResponse。这应该是这样的。

    return render(request, template, {'available_lessons': available_lessons})
    

    在您的模板中

    var available_lessons_json = {{available_lessons|safe}}
    

    【讨论】:

      【解决方案2】:

      Javascript 不喜欢响应内容开头的b,这表示它是一个字节字符串。 response.content 始终编码为字节 - 您可以使用 {{available_lessons_json.content.decode|safe}} 对其进行解码

      请注意,如果response.content 包含用户输入,您很可能会介绍XSS vulnerabilities into your site

      【讨论】:

        猜你喜欢
        • 2012-02-17
        • 2020-10-03
        • 1970-01-01
        • 2018-08-19
        • 1970-01-01
        • 2018-07-29
        • 2018-10-09
        • 2022-06-25
        • 1970-01-01
        相关资源
        最近更新 更多