Django访问/post路径时出现NoReverseMatch反向解析错误如何解决?
问题排查原因
- 检查所有Post实例的slug字段值
如果任意一条Post数据的slug字段为空,或者包含非小写字母、数字、减号、下划线的特殊字符,都无法匹配<slug:slug>的路由规则,触发反向解析错误。你可以先在数据库中校验所有Post记录的slug字段是否合法。 - 检查子应用路由命名空间配置
如果你在项目根urls.py中include当前子应用的路由时设置了namespace参数,模板中调用url标签需要加上命名空间前缀,格式为{% url '命名空间:post-detail-page' slug=post.slug %}。 - 修复模板引号冲突问题
你当前模板中a标签的href属性用了双引号,内部{% url %}标签也使用了双引号,部分Django版本会出现解析异常,将内部的双引号替换为单引号即可:<a href="{% url 'post-detail-page' slug=post.slug %}"> - 补全路由末尾斜杠
Django默认开启APPEND_SLASH = True配置,你的当前路由没有加末尾斜杠,建议统一补全避免跳转和解析异常:urlpatterns = [ path("",views.starting_page,name = "starting-page"), path("posts/",views.posts,name = "post-page"), path("posts/<slug:slug>/",views.post_detail,name="post-detail-page"), ] - 补充路径配置
你提到的访问/post路径报错属于独立问题:你的路由中没有定义/post对应的匹配规则,只有/posts(列表页)和/posts/xxx(详情页),如果需要使用/post路径可额外补充对应路由配置。
内容的提问来源于stack exchange,提问作者Max_len
相关产品推荐
相关产品推荐

