Nei*_*eil 7 django django-templates django-template-filters
我正在尝试将字典传递给django模板.在django视图中,变量被初始化并按原样传递:
foo = {'a':'b'}
...
return render(request, 'template.html', {'foo': str(foo)}
Run Code Online (Sandbox Code Playgroud)
在模板中,我有
{{ foo|default:"{}"|safe}}
Run Code Online (Sandbox Code Playgroud)
如果它是相关的,我在jquery片段中有上面的行.该片段失败,因为dict被渲染为
[{'a': u'b'}]
Run Code Online (Sandbox Code Playgroud)
而不是我期望的:
[{'a': 'b'}]
Run Code Online (Sandbox Code Playgroud)
似乎安全过滤器没有删除dict值'b'之前的unicode u.我怎么做?
您应该使用函数将其显式转换为JSON,因为JSON和默认Python字符串化之间存在一些细微差别:
JSON中的字符串在技术上必须用分隔"而不是分隔',尽管解析器也倾向于接受后者(参见json.org上的字符串规则)
Bool文字是小写的
如果您的数据包含数字,字符串,列表和dicts以外的内容,则使用str它们可能会默默生成无效的JSON
使用模板过滤器,例如django-jsonify:
{% load jsonify %}
...
{{ foo|jsonify }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4384 次 |
| 最近记录: |