首页 > 解决方案 > 使用 Django 的通用日期视图有一个 404 错误

问题描述

视图.py

from django.urls import path, re_path
from blog import views

app_name = 'blog'
urlpatterns = [

    path('archive/<int:year>/<str:month>/<int:day>/',
         views.PostDAV.as_view(), name='post_day_archive'),
    path('archive/today/', views.PostTAV.as_view(), name='post_today_archive'),
]

网址.py

from django.views.generic.dates import DayArchiveView, TodayArchiveView

from blog.models import Post


class PostDAV(DayArchiveView):
    model = Post
    date_field = 'modify_dt'


class PostTAV(TodayArchiveView):
    model = Post
    date_field = 'modify_dt'

错误代码

Page not found (404)
Request Method: GET
Request URL:    http://127.0.0.1:8000/blog/archive/today/
Raised by:  blog.views.PostTAV
No posts available

You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

使用DayArchiveView时,打开了模板,但是使用TodayArchiveView时出现404错误。在库的官方网站上(https://docs.djangoproject.com/en/3.0/ref/class-based-views/generic-date- based/ ),我确定 TodayArchiveView 和 DayArchiveView 有相同的模板名称,但为什么只有在使用 TodayArchiveView 时才会出现 404 错误?为什么 TodayArchiveView 单独使用相同模板时会出现 404 错误?为了以防万一,我将 TodayArchiveView 的模板命名为其他名称,并尝试使用其他模板,但仍然出现 404 错误。有什么我错过的吗?我为我糟糕的英语感到抱歉。

堆栈跟踪

System check identified no issues (0 silenced).
May 20, 2020 - 12:05:42
Django version 3.0.6, using settings 'myblog.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Not Found: /
[20/May/2020 12:05:45] "GET / HTTP/1.1" 404 2135
[20/May/2020 12:05:51] "GET /blog/archive/ HTTP/1.1" 200 771
Not Found: /blog/archive/today/
[20/May/2020 12:05:57] "GET /blog/archive/today/ HTTP/1.1" 404 1731

第一个 404 错误是因为我还没有设置主页。请忽略它。

标签: pythondjango

解决方案


推荐阅读