Django数据库存在对应条目却返回404错误问题求助
问题根因
该404并非URL匹配逻辑错误,是正则捕获分组规则缺失导致传递给视图的pk参数为空,DetailView拿着空值查询数据库匹配不到对应记录,才抛出404错误。
你companies/urls.py中的URL规则url(r'^company/(?P<pk>)'里,<pk>后未填写匹配规则,导致捕获到的pk参数是空字符串,并未把URL里的F值传递到视图中。
修复方案
1. 修正companies/urls.py的正则规则
如果你的主键是包含字母、数字的字符串,修改成如下配置即可:
from . import views from django.conf.urls import url urlpatterns = [ # 增加\w+匹配字母/数字/下划线,末尾加$匹配URL结束标识 url(r'^company/(?P<pk>\w+)/$', views.CompanyDetailView.as_view(), name='company-detail') ]
如果你使用Django 2.0+版本,也可以换成更简洁的path写法:
from . import views from django.urls import path urlpatterns = [ path('company/<str:pk>/', views.CompanyDetailView.as_view(), name='company-detail') ]
2. 补充检查
你粘贴的Main/urls.py首行import代码少了字符f,如果实际代码也是rom django.contrib import admin,需要修正为from django.contrib import admin。
修改完成后重启服务,再次访问对应地址即可正常加载数据。
内容的提问来源于stack exchange,提问作者Jevgenijs
相关产品推荐
相关产品推荐

