django - 具有现有数据库条目的 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/提出者:company.views。 CompanyDetailView 使用 main.urls 中定义的 URLconf,Django 按以下顺序尝试了这些 URL 模式:
行政/
公司/ ^company/(?P) [name='company-detail']
当前路径,company/company/F/,与最后一个匹配。
您看到此错误是因为您的 Django 设置文件中有 DEBUG = True 。将其更改为 False,Django 将显示标准 404 页面。"*
只是补充一下,我可以使用 url 从管理员访问记录
http://127.0.0.1:8080/admin/companies/company/F/change/
真的迷路了,质疑我的理智。
解决方案
缺少主键的正则表达式部分,例如:
urlpatterns = [
url(r'^company/(?P<pk>.*)/$', views.CompanyDetailView.as_view(), name='company-detail')
]
如果您使用 aurl(…)
那么它希望为参数添加一个正则表达式来捕获该值。如果您没有在括号之间指定任何正则表达式,则该模式被认为是空的,因此参数将是一个空字符串。
我不知道这是否pk
是一个好的参数名称,因为您将类似的项目传递F
给它。也许这应该重命名为slug
或类似的东西。
注意:从django-3.1开始,不推荐使用
url(…)
[Django-doc]以支持re_path(…)
[Django-doc]。此外,路径转换器还引入了一种新的路径语法:为此,您可以使用path(…)
[Django-doc]。
推荐阅读
- python - Webots 中的远程对象创建
- python - 文本数据/字符串未正确解析到 python 中的字典
- prestashop-1.6 - 为什么在 prestashop 后端重复产品
- ios - 如何在 iOS 中使用 TLS 会话票证(目标 c)最小化 Firebase 实时数据库下载带宽并最小化计费
- c# - 找不到包 Microsoft.AspNetCore.Razor.Design。源中不存在具有此 ID 的软件包:
- r - 如何在 `mutate` 中的 `map` 中取消引用 (!!)
- python-3.x - 在 VS 代码中设置 UWSGI 调试
- c# - C# 代码,允许您在不使用 datagridview 的情况下仅使用名称 Condition 对 SQL 数据库中的所有数量求和
- excel - 运行时错误 1004 应用程序定义或对象定义的细胞计数错误
- java - 即使只有一个编写器线程, volatile 也会有问题