Django 博客生成下一篇/上一篇条目

1 投票
1 回答
1048 浏览
提问于 2025-04-16 00:18

在一个博客应用中(我大部分是按照教程搭建的),我想在每个文章的单独页面上添加“上一篇”和“下一篇”的链接。这个博客应用的urls.py文件看起来是这样的:

from django.conf.urls.defaults import *
from django.views.generic import list_detail
from sandy.blog.models import Post


urlpatterns = patterns('',
    url(r'^post/(?P<slug>.*)/$', list_detail.object_detail,
    {'queryset': Post.objects.all(), 'template_object_name': 'post',},
    name="single_post"),
    url(r'^$', list_detail.object_list,
    {'queryset': Post.objects.order_by('-published'), 'template_object_name': 'post',},
    name="blog_home"),

)

在单独页面的模板中,我想做类似这样的事情:

<p><a href="{% url single_post slug=[how would I derive it???] %}">Previous Post</a></p>

我在模板中有一个Post对象,叫做post,所以我可以用类似于

{% url single_post slug=post.slug %}的方式来获取当前页面的链接,但我想要能够像这样使用slug=post[-1].slug或者其他的方式。有没有简单的方法可以做到这一点呢?

当然,我需要进行一些检查(看看是否有上一篇文章),而且我也需要为“下一篇”链接重复这个过程。

我一直在绕圈子想让这个功能正常工作。有没有什么办法,还是说我必须为这个页面写一个完整的视图?

1 个回答

4

你需要使用 get_next_by_FOO()get_previous_by_FOO() 这两个模型方法。

撰写回答