Django,路径返回 404

时间:2021-02-04 16:05:04

标签: python django

我的 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),
]

预先感谢您的帮助

1 个答案:

答案 0 :(得分:1)

'^list' 更改为 '^list/$',让您的网址以 / 结尾很重要,因为 Django 默认将斜杠附加到任何不以 1 结尾的传入网址。您可以通过在设置中设置 APPEND_SLASH = False 来更改此设置。此外,您在项目级 url 中包含两次 myapp.urls
也在您的包括:

url(r'^$',include('myapp.urls'))

您包括网址,但在您编写的模式中^$。在正则表达式中,^ 表示字符串应从该位置开始,而 $ 表示字符串应在该位置结束。您的 views.list 模式最终是 ^$^list/$,这是不可能匹配的。如果你这样做,基本上你是在阻止任何包含的 url 被匹配。从那里删除 $