Django添加用户帖子列表后,帖子详情页触发404错误求助
Django留言板帖子详情404错误修复
问题原因
你的URL路由顺序搞反了。Django会按urlpatterns里的从上到下顺序匹配路由,当你访问帖子详情页(比如test-post/)时,这个路径先被<str:username>/的规则接住——Django把test-post当成用户名去查询User表,自然找不到对应数据,直接抛出404错误。
解决办法
把帖子详情的路由(boards_post)放到用户帖子列表路由(user_posts)前面:
urlpatterns = [ # 其他路由... path('<slug:slug>/', views.FullPost.as_view(), name='boards_post'), path('<str:username>/', views.UserPostList.as_view(), name='user_posts'), # 其他路由... ]
原理说明
<str:username>的匹配范围极广,任何字符串格式的路径都会被它匹配;而<slug:slug>是专门为URL友好的短字符串(比如帖子的slug)设计的匹配规则。把更具体的路由放在前面,Django会优先尝试匹配帖子详情,只有当路径不符合slug规则(或找不到对应帖子)时,才会去匹配用户帖子列表的路由,从根本上避免了路由冲突。
内容的提问来源于stack exchange,提问作者Mark Hewitt
相关产品推荐
相关产品推荐

