gpt4 book ai didi

django:使用没有 unicode 'u' 类型指示符的安全过滤器呈现变量

转载 作者:行者123 更新时间:2023-12-04 12:22:36 24 4
gpt4 key购买 nike

我正在尝试将字典传递给 Django 模板。在 Django View 中,变量被初始化并传递如下:

foo = {'a':'b'}
...
return render(request, 'template.html', {'foo': str(foo)}

在模板中,我有
{{ foo|default:"{}"|safe}}

如果相关,我在 jquery 代码段中有上述行。该片段失败,因为 dict 被呈现为
[{'a': u'b'}] 

而不是我期望的:
[{'a': 'b'}] 

似乎安全过滤器没有删除 dict 值 'b' 之前的 unicode u。我怎么做?

最佳答案

您应该使用函数将其显式转换为 JSON,因为 JSON 和默认 Python 字符串化之间存在一些细微差别:

  • 从技术上讲,JSON 中的字符串必须用 " 分隔。而不是 ' ,尽管解析器也倾向于接受后者(参见 json.org 上的字符串规则)
  • bool 文字是小写的
  • 如果您的数据包含数字、字符串、列表和字典以外的内容,请使用 str他们可能会默默地产生无效的 JSON

  • 使用模板过滤器,例如 django-jsonify :
    {% load jsonify %}
    ...
    {{ foo|jsonify }}

    关于django:使用没有 unicode 'u' 类型指示符的安全过滤器呈现变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15570048/

    24 4 0