替换硬编码URL时Django模板报错:无效block标签'path'
解决Django模板中的TemplateSyntaxError:无效block标签'path'
嘿,这个问题我之前刚踩过一模一样的坑!你碰到的TemplateSyntaxError根源特别简单——模板里生成动态URL的标签用错了:Django模板中用来反向解析URL的标签是{% url %},而不是{% path %},这就是系统提示“预期'empty'或'endfor'”的原因,因为它根本不认识path这个模板标签。
修正步骤:
只需要修改你的index.html模板里的链接部分,把{% path %}替换成{% url %}就行:
修正后的index.html代码:
{% if all_albums %} <h3>here are all my albums:</h3> <ul> {% for album in all_albums %} <li><a href="{% url 'music:detail' album.id %}">{{ album.album_title }}</a></li> {% endfor %} </ul> {% else %} <h3>You don't have any Albums</h3> {% endif %}
为什么其他配置没问题?
看了你贴的其他代码:
music.urls.py里的app_name = 'music'和路由定义完全正确,detail路由的name='detail'也符合反向解析的要求music.views.py的视图逻辑正常,能正确把all_albums数据传递到模板- 主项目的
Analytic_practice.urls也正确包含了music.urls的路由
这些部分都不需要改动,只需要修正模板里的标签即可。
简单区分下:path()是在urls.py里用来定义路由规则的Python函数,而{% url %}是Django模板内置的标签,专门用来根据路由名称反向生成URL,这俩是完全不同的东西哦~
内容的提问来源于stack exchange,提问作者jas
相关产品推荐
相关产品推荐

