在对象属性的 `js` 脚本中应用 django 的模板过滤器
Apply django's template filters inside a `js` script on an object's attribute
我无法在对象属性的 js
脚本中使用 Django 的模板过滤器。
这段代码returns一个js
语法错误:
<script>
{{ obj.geometry.geojson | safe }}
</script>
如果过滤器应用于对象,则不会引发错误:
<script>
{{ obj | safe }}
</script>
上面GeoJson
文件的内容如下图:
{ "type": "Polygon", "coordinates": [ [ [ 3, 36 ], ... }
我显然不希望将引号字符 ("
) 转义为 ("
),这样我可以 JSON.parse()
稍后将其从字符串转换为一个对象。
在视图中生成新的 GeoJson 字符串并将其传递给类似于以下的模板:
return render(
request,
'my_template.html',
{'obj': obj, 'geo_json': json.dumps(obj.geometry.geojson)}
)
现在任何需要 GeoJson 内容的地方都可以使用它,如下所示:
<script>
{{ geo_json | safe }}
</script>
更新:
你也可以通过 context-processors or template-tags 来处理这个问题,但这种方式可能很难而且没有必要...
我无法在对象属性的 js
脚本中使用 Django 的模板过滤器。
这段代码returns一个js
语法错误:
<script>
{{ obj.geometry.geojson | safe }}
</script>
如果过滤器应用于对象,则不会引发错误:
<script>
{{ obj | safe }}
</script>
上面GeoJson
文件的内容如下图:
{ "type": "Polygon", "coordinates": [ [ [ 3, 36 ], ... }
我显然不希望将引号字符 ("
) 转义为 ("
),这样我可以 JSON.parse()
稍后将其从字符串转换为一个对象。
在视图中生成新的 GeoJson 字符串并将其传递给类似于以下的模板:
return render(
request,
'my_template.html',
{'obj': obj, 'geo_json': json.dumps(obj.geometry.geojson)}
)
现在任何需要 GeoJson 内容的地方都可以使用它,如下所示:
<script>
{{ geo_json | safe }}
</script>
更新:
你也可以通过 context-processors or template-tags 来处理这个问题,但这种方式可能很难而且没有必要...