Django如何使用URL dispatcher生成页面可点击列表链接并解决404报错
问题修复方案
核心错误点
- 模板中的
{% url %}标签语法错误,缺少闭合的},导致Django没有将该代码识别为模板标签,直接作为普通字符串拼接到了请求地址中,才会出现路径为转义后的模板代码的404报错。 - 应用urls.py中配置了
app_name = "encyclopedia"命名空间,反向解析路由时需要携带命名空间前缀,否则无法匹配到对应路由。
修复后的代码
HTML模板
<ul> {% for entry in entries %} <li> <a href="{% url 'encyclopedia:entrypage' entry %}">{{ entry }}</a> </li> {% endfor %} </ul>
可选优化:views.py逻辑调整(避免后续业务问题)
现有代码中直接将传入的路由参数title覆盖为条目内容,会导致后续模板需要展示条目标题时取值错误,建议调整变量命名区分参数和内容:
def entry_page(request, title): entry_content = util.get_entry(title) if entry_content: content = markdown2.markdown(entry_content) context = { "title": title, "content": content, } return render(request, "encyclopedia/entrypage.html", context) else: return render(request, "encyclopedia/errorpage.html")
内容的提问来源于stack exchange,提问作者Chuks
相关产品推荐
相关产品推荐

