【问题标题】:Issues with json strings and django templatesjson 字符串和 django 模板的问题
【发布时间】:2012-11-13 04:48:01
【问题描述】:

我正在尝试查询数据列表,将其转换为 json 对象,然后将其传递给我的 javascript,以便在那里对其进行评估:

var data = '{{ passed_list|jsonify }}';

# This evaluates to:

var news = '[{"pk": 133, "model": "Article.article
    ","fields":

但是,这不起作用,因为我正在尝试访问元素。

例如,

var object = data[0].pk;
In my view source, this does not evaluate to 133 as expected but it evaluates
to ... data[0].pk ... which is a bit confusing.

这是我的 jsonify:

 if isinstance(object, QuerySet):
    return serialize('json', object)
return simplejson.dumps(object, ensure_ascii=False)

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: javascript django json


    【解决方案1】:

    django 默认会转义 html 字符

    如果您完全信任数据,(即它来自您的代码,并且内容的任何部分都不能来自用户),您可以使用

    var data = '{{ passed_list|jsonify|safe }}';
    

    告诉 django 不要逃避它

    【讨论】:

    • 谢谢!看起来差不多解决了,只是多了一个小问题,chrome的调试器说有一个“意外的标识符,在china和s之间用逗号”标题:“中国的有毒牛奶告密者被谋杀”,这应该怎么做如果我想转义该引用而不是其他引用,则处理?
    • 听起来像你的 jsonify.. 中的一个错误。它返回有效的 json 吗?
    • 是的,我实际上使用了 django 的默认 sn-p 进行 jsonify 我在我的主帖中更新了它。
    • 你的建议奏效了,我只是太傻了。 '{{passed_list|jsonify }}' 毫无意义,为什么我还要包含这些引号,出于某种原因,在许多在线 json 指南中,很多人在他们的 json 对象上都有单引号,但不知道为什么。
    【解决方案2】:
    var data = '{{ portfolio|jsonify|escapejs|safe }}';
    

    Filter escapejs 放在 jsonify 之后使用特殊字符解决问题,例如:'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 2020-05-11
      • 2014-07-26
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多