【问题标题】:Django: Page Not FoundDjango:找不到页面
【发布时间】:2017-01-15 03:19:45
【问题描述】:

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

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)工作正常。

【问题讨论】:

    标签: python django http-status-code-404


    【解决方案1】:

    首先,不知道你是怎么没有遇到这个问题的,而是在你的app/urls.py

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

    应该是

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

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

    其次,您的所有 URL 模式都不匹配 my_details/ 它们只匹配 my_details/&lt;id&gt;

    更多关于URL regex, etc..的文档

    【讨论】:

    • 我完全误解了 (?P\d+) 的意思...我在尝试 my_details?id=3 等
    • 你应该这样做my_details/3/
    • 嗯,谢谢。既然我已经这样做了,还有什么需要添加到views.py 中的吗?页面现在正在渲染,但模板中的 {{ model.id }} 看起来是空白的……我需要手动检索模型对象吗?
    • 是的,您必须通过“上下文”将model 对象发送到模板:docs.djangoproject.com/en/1.10/ref/templates/api/…
    • 我的印象是 DetailView 和 SingleObjectMixin 以某种方式处理了这个问题
    猜你喜欢
    • 1970-01-01
    • 2016-08-01
    • 2016-08-01
    • 2015-10-22
    • 2014-03-20
    • 2019-01-22
    • 2020-10-27
    • 2019-07-21
    • 2016-09-21
    相关资源
    最近更新 更多