作者:HelloGitHub-文中涉及的示例代码已更新至HelloGitHub-团队仓库。在之前的系列教程中,我们已经实现了:对于文章的发布、展示、评论等功能,认真的朋友可能已经发现,其中有些功能设计的不是很好。今天我们将优化一些体验和操作细节。让我们的博客更完美,更易用~在模型中指定排序为了让文章(Posts)按照发布时间倒序排列,让最新发布的文章排在文章列表的最前面,我们对返回的文章列表进行了排序,即每个视图函数中都有类似Post.objects.all().order_by('-created_time')这样的代码,导致大量重复。因为只要返回的文章列表基本上是倒序排列的,在Post模型中就可以指定Post的自然排序方式。Django允许我们在models.Model的子类中定义一个名为Meta的内部类,通过它指定一些属性的值来指定模型类的一些特性。比如这里我们要指定Post的排序方式。先看Post的代码。在Post模型中定义的Meta类中,指定排序属性顺序:blog/models.pyclassPost(models.Model):...created_time=models.DateTimeField()...classMeta:verbose_name='article'verbose_name_plural=verbose_nameordering=['-created_time']ordering属性用于指定文章排序方式,['-created_time']指定根据哪个属性值排序,这里指定按文章发布时间排序,负号表示倒序。list中可以有多个item,比如ordering=['-created_time','title']表示先按照created_time排序,如果created_time相同,则按照title排序。这样指定后,所有返回的文章列表都会自动按照Meta中指定的顺序进行排序,所以视图函数中文章列表中对返回结果进行排序的代码可以去掉。评论模型类(Comment)也可以添加这个属性。改进跳转链接在导航栏中有一个黑白Logo,我们希望点击它返回首页,只需修改超链接即可。打开base.html,修改Logo处的超链接:
