数据无法从views.py传递至模板的技术求助
问题原因
- 上下文变量传递错误:你在
views.py里直接把data字典作为context参数传入,这会让字典里的每个键(比如type、features)成为模板里的独立变量,而模板里引用的{{ data }}这个变量根本不存在,自然无法渲染数据。 - 多余的script标签:
json_script过滤器会自动生成带指定ID的<script>标签,你手动加的空<script id="data-b">完全没必要,还可能干扰渲染结果。
修复步骤
1. 修正views.py的变量传递
把context=data改成context={'data': data},让模板里的{{ data }}能对应到你定义的字典:
def index(request): data = { "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [37.62, 55.793676] }, "properties": { "title": "«Легенды Москвы", "placeId": "moscow_legends", "detailsUrl": "static/Moscow_map/places/moscow_legends.json" } } ] } # 将data包装在字典中,键名和模板里的变量名保持一致 return render(request, 'index.html', context={'data': data})
2. 简化index.html模板
删掉手动添加的空<script>标签,只保留json_script过滤器调用就行——它会自动帮你生成正确的script标签:
{{ data|json_script:"data-b" }}
验证方法
重启Django服务后打开页面,查看页面源代码,应该能看到自动生成的包含完整JSON数据的script标签:
<script id="data-b" type="application/json">{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [37.62, 55.793676]}, "properties": {"title": "«Легенды Москвы", "placeId": "moscow_legends", "detailsUrl": "static/Moscow_map/places/moscow_legends.json"}}]}</script>
之后你就可以通过JavaScript读取这个标签里的内容来使用数据了。
内容的提问来源于stack exchange,提问作者jiezzzzzzzzz
相关产品推荐
相关产品推荐

