gpt4 book ai didi

python - Django urls.py 错误-某些模式不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 07:40:05 25 4
gpt4 key购买 nike

在使用 Django 开发个人博客时,我在代码中遇到了一个严重的错误。基本上,我通过添加一些规则来更改我的 urls.py 文件以使某些 View 可访问。

urls.py

from django.conf.urls import include, url
from django.contrib import admin

from blog import views


urlpatterns = [
# Examples:
# url(r'^$', 'blogas.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),

url(r'^admin/', include(admin.site.urls)),
url(r'^$', views.index, name='index'),
url(r'^(?P<slug>\w+)', views.view_post, name='view_blog_post'),
url(r'^about/$', views.about, name='about'),
url(r'^posts/$', views.posts, name='posts'),

]

除了当我尝试访问 http://127.0.0.1:8000/about 或/posts 时,一切似乎都正常,Django 抛出 404 错误。这是什么原因呢?我已经定义了这两个规则,但系统似乎无法识别该模式 - 也许我拼错了什么?也许我对 url 格式一无所知(可能是,这是我第一次做这些东西)?

新手程序员非常感谢所有发现错误的人:)

最佳答案

url-patterns 是从上到下处理的。你的第三个模式 ^(?P<slug>\w+)消耗一切,所以aboutposts永远不会达到。

一个例子:Django 想要找到 url about/ 的 View .图案 ^admin/^$不匹配。但是^(?P<slug>\w+)会,因为 about以字母或数字开头(\w中包含的字符集)

>>> import re
>>> re.search('^(?P<slug>\w+)', 'about/')
<_sre.SRE_Match object at 0x10b5b7be8>

所以 Django 找到了匹配项,调用 Bs views.view_post并完成请求。这意味着,必须先制定更具体的规则。更好:避免歧义。

关于python - Django urls.py 错误-某些模式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23716343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com