Django:找不到页面

Django: Page Not Found

我从 Django 收到了 404,none 之前关于该主题的帖子(其中有很多)似乎有所帮助。

views.py

from django.views.generic.detail import DetailView, SingleObjectMixin
from app.models import MyModel

class MyDetails(DetailView, SingleObjectMixin):
    template_name = "app/my_view.html"
    model = MyModel

urls.py

from django.conf.urls import include, url
from django.contrib   import admin
from app.views import MainList, post_form_upload, MyDetails

urlpatterns = [
    url(r'^$', MainList.as_view(), name="main_list"),
    url(r'^add_something$', post_form_upload, name="add_something"),
    url(r'^my_details/(?P<pk>\d+)$', MyDetails.as_view(), name="my_details"),
]

app/urls.py

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

urlpatterns = [
    (r'^$', include('app.urls')),
    url(r'^admin/', include(admin.site.urls)),
]

当我输入 URL: http://localhost:8000/my_details 时,出现以下错误:

Using the URLconf defined in app.urls, Django tried these URL patterns, in this order:
^$ [name='main_list']
^add_something$ [name='add_something']
^my_details/(?P<pk>\d+)$ [name='my_details']
The current URL, my_details, didn't match any of these.

其他两个 URL(/ 和 /add_something)工作正常。

首先,不确定你是如何不 运行 进入这个问题,但在你的 app/urls.py

(r'^$', include('app.urls')),

应该是

(r'^/', include('app.urls')),

$ 表示正则表达式模式结束,include() 内的任何内容都不会被包含在内。

其次,None 的 URL 模式匹配 my_details/ 他们只匹配 my_details/<id>

关于 URL regex, etc..

的文档的更多信息