Django 404与现有的数据库条目



我对django很陌生,目前正在做我的第一个无向导项目。我遇到了一个对我来说似乎很不合理的问题,而且我自己无法解决。

基本上,我得到url模式匹配,但也得到404错误,页面没有找到。我用不同的条目测试了它,结果总是一样的——404。

公司/urls . py

from . import views
from django.conf.urls import url
urlpatterns = [
url(r'^company/(?P<pk>)', views.CompanyDetailView.as_view(), name='company-detail')
]

主/urls . py

rom django.contrib import admin
from django.urls import include, path

urlpatterns = [
path('admin/', admin.site.urls),
path('companies/', include('companies.urls'))
]

,下面是错误信息:*"页面未找到(404)没有找到匹配查询的公司请求方法:GET请求URL: http://127.0.0.1:8080/companies/company/F/由:companies.views.CompanyDetailView提出使用在main中定义的URLconf。Django尝试了以下URL模式,顺序如下:

管理/

公司/^公司/p (?) [name = ' company-detail ']

当前路径companies/company/F/与上一个路径匹配

你看到这个错误是因为你在Django设置文件中设置了DEBUG = True。将其改为False, Django将显示一个标准的404页面。"*

我可以用url 从admin访问记录。http://127.0.0.1:8080/管理/企业/公司/F/改变/

真的迷失在这里,质疑我的理智。

缺少主键的正则表达式部分,例如:

urlpatterns = [
url(r'^company/(?P<pk>.*)/$', views.CompanyDetailView.as_view(), name='company-detail')
]

如果您使用url(…),那么它期望您为参数添加一个正则表达式来捕获值。如果在括号之间没有指定任何正则表达式,则模式被认为是空的,因此参数将是一个空字符串。

我不知道pk是否是一个好的参数名称,因为您将F之类的项传递给它。也许它应该重命名为slug或类似的东西。


注意从django-3.1开始,url(…)(Django-doc)不支持re_path(…)[Django-doc]。此外,路径转换器还引入了一种新的路径语法:you使用path(…)[Django-doc] .

相关内容

  • 没有找到相关文章

最新更新