我的 Django 应用程序出现问题,当我尝试浏览到 http://127.0.0.1:8000/list/ 时,它返回 404 错误:
placeholder
这里是我的 urls.py 文件:
Using the URLconf defined in f_django.urls, Django tried these URL patterns, in this order:
^contact/$
^description/$
^$
myapp/
admin/
The current path, list/, didn't match any of these.
我的 myapp/urls.py 文件:
from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from django.urls import include
from . import views
urlpatterns = [
url(r'^contact/$',views.contact),
url(r'^description/$',views.description),
url(r'^$',include('myapp.urls')),
path('myapp/',include('myapp.urls')),
path('admin/', admin.site.urls),
]
我的 settings.py 中的这一行:
from django.conf.urls import url
from django.urls import path
from . import views
urlpatterns = [
url(r'^$',views.index),
url(r'^list',views.list),
url(r'^Articles/(?P<id>[0-9]+)$', views.details),
]
预先感谢您的帮助
答案 0 :(得分:1)
将 '^list'
更改为 '^list/$'
,让您的网址以 /
结尾很重要,因为 Django 默认将斜杠附加到任何不以 1 结尾的传入网址。您可以通过在设置中设置 APPEND_SLASH = False
来更改此设置。此外,您在项目级 url 中包含两次 myapp.urls
。
也在您的包括:
url(r'^$',include('myapp.urls'))
您包括网址,但在您编写的模式中^$
。在正则表达式中,^
表示字符串应从该位置开始,而 $
表示字符串应在该位置结束。您的 views.list 模式最终是 ^$^list/$
,这是不可能匹配的。如果你这样做,基本上你是在阻止任何包含的 url 被匹配。从那里删除 $
。