【发布时间】:2018-03-23 00:39:57
【问题描述】:
考虑到 Django 是为新闻网站构建的,我正在尝试做一些我认为相对简单的事情。只想在我的博客的侧边栏上获得按年/月计数分组的存档列表。类似的东西
2018
-Mar(3)
-Feb (2)
-Jan (6)
我在这里做了很多搜索,但似乎已经有一段时间没有人想要做这样的事情了,而其他一切都已经过时了。
我已经能够弄清楚如何创建每月存档 url/view/tempate,并且可以通过转到 blog/2018/03 来显示一个月的帖子,这是我博客的观点
class BlogListView(generic.ListView):
model = Post
context_object_name = 'post_list'
queryset = Post.objects.all()
template_name = 'post_list.html'
class ArticleMonthArchiveView(MonthArchiveView):
queryset = Post.objects.all()
date_field = "posted"
allow_future = True
def blog_post(request, slug):
blog_post = Post.objects.get(slug=slug)
context = {'blog_post': blog_post}
return render(request, 'blog/blog_post.html', context)
还有我的 url(请暂时忽略 url 和路径的混合——正在处理这个问题!)
urlpatterns = [
url(r'^$', BlogListView.as_view(), name='blog'),
url(r'^(?P<slug>[\w-]+)/$', blog_post, name='blog_post'),
path('<int:year>/<int:month>/',
ArticleMonthArchiveView.as_view(month_format='%m'),
name="post_archive_month"),
]
我想我需要在我的所有视图上创建另一个上下文字段才能做到这一点?但我真的不知道从哪里开始。我知道我显然可以手动创建月份列表并循环尝试查看帖子是否匹配,但我无法想象这是最有效的方法。
有人有我可能在这里遗漏的相当明显的解决方案吗?
【问题讨论】: