如何在Django的json_script中使用URL模板标签?
解决Django URL标签无法在json_script中渲染的问题
你遇到的核心问题是:将URL模板标签当作字符串字面量传递给json_script过滤器,导致Django未解析模板标签,直接输出原始文本。
错误写法的问题
- 第一种写法:把
{% url ... %}包裹在双引号中,使其成为普通字符串,Django不会解析字符串内部的模板标签。 - 第二种写法:完全搞反了
json_script的用法——该过滤器的参数是目标script标签的id,而非要渲染的URL,且要过滤的值应该是已解析的URL变量。
正确实现方式
先让Django解析URL标签得到实际的URL字符串,再将其传入json_script过滤器:
方式1:先赋值变量再使用
{% url 'tutorhomepage:tutorSelectedDay' tutor_id selected_date as tutor_selected_url %} {{ tutor_selected_url | json_script:"url_test" }}
方式2:使用with标签简化
{% with tutor_selected_url=url 'tutorhomepage:tutorSelectedDay' tutor_id selected_date %} {{ tutor_selected_url | json_script:"url_test" }} {% endwith %}
正确输出示例
执行后生成的代码会是已渲染的实际URL:
<script id="url_test" type="application/json">"/tutorhomepage/1/2024-05-20/"</script>
内容的提问来源于stack exchange,提问作者jarjarbinks99
相关产品推荐
相关产品推荐

