将django的模板过滤器应用于对象属性的`js`脚本中

时间:2018-03-01 14:03:27

标签: javascript json django django-templates django-template-filters

我无法在对象属性的js脚本中使用django的模板过滤器。

这段代码返回js SyntaxError:

<script>
    {{ obj.geometry.geojson | safe }}
</script>

如果过滤器应用于对象,则不会引发错误:

<script>
    {{ obj | safe }}
</script>

以上GeoJson文件的内容如下所示:

{ "type": "Polygon", "coordinates": [ [ [ 3, 36 ], ... }

我显然不希望将引号字符(")转义为(&quot;),以便稍后我可以JSON.parse()将其从字符串转换为对象

1 个答案:

答案 0 :(得分:1)

在视图中生成新的GeoJson字符串并将其传递给类似于下面的模板:

return render(
           request,
           'my_template.html',
           {'obj': obj, 'geo_json': json.dumps(obj.geometry.geojson)}
       )

现在,您需要GeoJson内容的所有地方都使用它,如下所示:

<script>
    {{ geo_json | safe }}
</script>

更新:

此外,您可以通过context-processorstemplate-tags处理此问题,但这种方式可能很难且不必要......