pyr*_*ney 3 python django pagination django-class-based-views
我能够使用通用视图在我网站的索引页面上预览我的新闻剪辑数据库中的100个最新项目:
现在我需要在我的网站的单独逻辑部分中对我的数据库进行分页.我需要按年分页.我不关心每年有多少条目,我只想从URL获取年份,从该年份获取数据库项目(即/ newsitems/validyearhere),并通过导航方式将其呈现给用户多年.在Rails中有一种方法可以做到这一点,但我无法在Django中找到方法.
我能使用当前部署的模型吗?
from django.db import models
class Article(models.Model):
headline = models.CharField(max_length=100)
subhead = models.CharField(max_length=50)
publication = models.CharField(max_length=30)
author = models.CharField(max_length=50)
date = models.DateField()
website = models.URLField()
def __unicode__(self):
return self.headline
Run Code Online (Sandbox Code Playgroud)
除了当前日期字段之外,我还必须添加冗余的Year数据库字段吗?架构是否需要以任何方式发展才能适应这种情况?
如果用户输入没有条目或不是一年的数据的年份,我还需要它优雅地失败.
请尽可能简单地解释一下,因为我对Django很新,并且发现学习曲线很陡峭.
使用新的基于类的视图,最简单的方法是使用YearArchiveView
class ArticleYearArchiveView(YearArchiveView):
model = Article
paginate_by = 100
context_object_name = 'article_list'
date_field = 'date'
allow_empty = True
Run Code Online (Sandbox Code Playgroud)
即使当年没有元素,允许空即显示页面
在你的urls.py,你会需要这样的东西
url(r'^newsitems/(?P<year>\d+)/$', ArticleYearArchiveView.as_view()),
Run Code Online (Sandbox Code Playgroud)