我剛開始嘗試Django的基於類的意見和對我MonthArchiveView一直很大,但是當我嘗試使用它給了我一個404消息YearArchiveView說:Django的YearArchiveView沒有發現任何職位指定年份
無後找不到匹配的查詢
而且我知道有帖子說應該匹配查詢。例如,/博客/ 2014/,給了我404,但/博客/ 2014 /可/不應該
#urls.py
from django.conf.urls import patterns, include, url
from django.views.generic import ListView, DetailView
from blog.models import Post
from blog.views import PostMonthArchiveView, PostYearArchiveView
urlpatterns = patterns('blog.views',
# main blog page w/ most recent 5 posts
url(r'^$', ListView.as_view(
queryset=Post.objects.all().order_by("-created")[:5],
template_name="blog/list.html"), name="blog"),
url(r'^(?P<slug>[-\w]+)/$', DetailView.as_view(
model=Post,
template_name="blog/post.html"), name="postdetail"),
url(r'^(?P<slug>[-\w]+)$', DetailView.as_view(
model=Post,
template_name="blog/post.html"), name="postdetail"),
# Example: /2012/aug/
url(r'^(?P<year>\d{4})/(?P<month>[-\w]+)/$',
PostMonthArchiveView.as_view(),
name="archive_month"),
url(r'^(?P<year>\d{4})/(?P<month>[-\w]+)$',
PostMonthArchiveView.as_view(),
name="archive_month"),
url(r'^(?P<year>\d{4})/$',
PostYearArchiveView.as_view(),
name="post_year_archive"),
url(r'^(?P<year>\d{4})$',
PostYearArchiveView.as_view(),
name="post_year_archive"),
)
和我的看法
#views.py
from django.shortcuts import render, get_object_or_404
from blog.models import Post
from django.views.generic.dates import MonthArchiveView, YearArchiveView
def post(request, slug):
post = get_object_or_404(Post, slug=slug)
return render(request, 'blog/post.html', {
'post': post,
})
class PostMonthArchiveView(MonthArchiveView):
queryset = Post.objects.all()
date_field = "created"
make_object_list = True
allow_future = True
class PostYearArchiveView(YearArchiveView):
queryset = Post.objects.all()
date_field = "created"
make_object_list = True
allow_future = True
任何幫助將是什麼太棒了,這一直讓我非常頭疼,而且在互聯網上找不到其他任何東西來嘗試幫助排除故障。謝謝!
編輯:使用Django 1.6.2
爲什麼你的urls.py中有兩種模式指向相同的視圖? –
@BurhanKhalid最初我是如何得到一個404如果URL是_/blog/some-title_而不是_/blog/some-title/_所以我增加了另一個來解決這兩種情況 – Eli
這對所有人都不好各種原因,特別是對於搜索引擎優化(因爲你現在已經跨兩個不同的網址分割點擊)。但是Django包含了從/ blog/some-title重定向到/ blog/some-title /的默認功能 - 請參閱['APPEND_SLASH']「(https://docs.djangoproject.com/en/1.6/ref/settings/#std :設置 - APPEND_SLASH)。 –