【问题标题】:Uncaught ReferenceError: False is not defined in python django template未捕获的 ReferenceError: False 未在 python django 模板中定义
【发布时间】:2019-10-14 22:07:00
【问题描述】:

我在尝试访问 Django 模板中的 Python 字典变量时收到 Uncaught ReferenceError: False is not defined 错误。

我尝试过使用safe 进行转义,但它不起作用:

result = {'test1' : [{'var1': 'PLANNED', 'var2': 'description', 'var3': False},{'var1':'PLANNED', 'var2':'description', 'var3': True}], 'test2' : [{'var1': 'PLANNED', 'var2': 'description', 'var3': False},{'var1':'PLANNED', 'var2':'description', 'var3': True}]}
return render(request, 'users/team.html', {'team' : team, 'result ' : result })

我在我的 HTML 中访问它,如下所示:

var params= {{result |safe}};

如何将此结果分配给 Django 模板中的变量?

【问题讨论】:

    标签: python-3.x django-templates


    【解决方案1】:

    问题在于您实际上是在用 JavaScript 编写 var params = ... False ...;。但是,JS 中的false 写成false,而不是False!注意大小写差异。这导致 JS VM 尝试将变量 False 的值部分分配给变量 params。不幸的是,您还没有定义一个名为False 的变量!因此,ReferenceError

    解决此问题的一种方法是使用 json_script 过滤器链接:

    {{ result|json_script:"params-data" }}
    <script>
        var value = JSON.parse(document.getElementById('params-data').textContent);
    </script>
    

    另一种方法是将result 手动编码/解码为 JSON。例如

    import json
    return render(request, 'users/team.html', {'team' : team, 'result ' : json.dumps(result) })
    

    var params = JSON.parse('{{result|safe}}');
    

    第一个选项显然更可取,因为它简洁且更直接。

    【讨论】:

    • 就我而言,我不想将整个结果转换为 lower 大小写。我也无法将 python 端的 bool 转换为小写。更新了代码以显示我如何将数据传递到前端。
    • @shilpa 啊,我误解了你的问题。我的答案已更新。
    猜你喜欢
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 2018-07-28
    • 2016-02-28
    相关资源
    最近更新 更多