난 그냥 장고의 클래스 기반의 뷰를 시도 시작했습니다에 대한 어떤 게시물을 발견하고 MonthArchiveView 나를 위해 큰 노력 해왔다하지만 내가 사용하려고 할 때 그것이 나에게 (404) 메시지를주는 YearArchiveView는 말을하지 :장고 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
어떤 도움이 될해야하는지 않습니다 위대한,이 날 꽤 두통이 발생하고 인터넷에서 시도하고이 문제를 해결하는 데 도움이되는 다른 것을 찾을 수 없습니다. 감사! 그것이 DetailView에 의해 발생되고 있음을 당신이지고 있었다 오류를 자세히 보았다, 그리고 더 나은 전체에 게시 싶다면 장고 1.6.2
왜 동일한보기를 가리키는 urls.py의 두 패턴이 있습니까? –
@BurhanKhalid _/blog/some-title/_ 대신 url이 _/blog/some-title_ 인 경우 원래 404를 얻었습니다. 따라서 두 상황 모두를 설명하기 위해 또 다른 URL을 추가했습니다. – Eli
모두에게 좋지 않습니다. 여러 종류의 이유, 특히 SEO의 경우 (두 개의 서로 다른 URL에서 조회수를 분할했기 때문에) 그러나 Django는/blog/some-title에서/blog/some-title /로 리디렉션되는 기본 기능을 포함합니다. ['APPEND_SLASH'] (https://docs.djangoproject.com/en/1.6/ref/settings/#std)를 참조하십시오. : 설정 - APPEND_SLASH). –