博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django简单博客实战(五)--- 文章详情页的上下篇
阅读量:3923 次
发布时间:2019-05-23

本文共 1572 字,大约阅读时间需要 5 分钟。

实现上一篇和下一篇

项目地址:https://github.com/ylpxzx/lifeblog

  1. 视图中定义上一篇下一篇逻辑
class PostDetailView(DetailView):    model = Post    template_name = 'detail_post.html'    context_object_name = "post"    pk_url_kwarg = 'post_id'    def get_object(self, queryset=None):        obj = super(PostDetailView,self).get_object()        obj.total_views += 1        obj.save(update_fields=['total_views'])        return obj    def get_context_data(self, **kwargs):        kwargs['author_list'] = Blogger.objects.all()        kwargs['category_list'] = Category.objects.all().order_by('post_category')        kwargs['popular_post'] = Post.objects.all().order_by('-total_views')[:4]        content = super(PostDetailView, self).get_context_data(**kwargs)        num = content['post'].id        # 下一篇,找出id大于当前文章id的文章,升序排序后取第一个,即为下一篇        next_post = Post.objects.filter(id__gt=num).order_by("id")[:1]         if len(next_post) == 0:            content['next_post'] = 0        else:            for next in next_post:                content['next_post'] = next        # 上一篇,找出id小于当前文章id的文章,降序排序后取第一个,即为上一篇        prev_post = Post.objects.filter(id__lt=num).order_by("-id")[:1]         if len(prev_post) == 0:              content['prev_post'] = 0        else:            for prev in prev_post:                content['prev_post'] = prev        return content
  1. 模板判断是否有上一篇和下一篇
{
% if prev_post != 0 %}
{
% endif %}{
% if next_post != 0 %}
{
% endif %}

转载地址:http://dgugn.baihongyu.com/

你可能感兴趣的文章
GCC参数详解
查看>>
软件开发者面试百问
查看>>
硬盘安装Fedora 9
查看>>
嵌入式Linux系统的GDB远程调试实践
查看>>
Linux下基于bluez与obex的服务端实现流程
查看>>
Linux命令行程序设计
查看>>
简单实用的线程管理类
查看>>
static的作用
查看>>
蓝牙核心规范中HCI层的研究与开发分析□ 张 熠 姜玉泉 《电脑知识与技术》 2007年第09期
查看>>
蓝牙协议的命令和事件
查看>>
基于蓝牙的数据传输系统的设计
查看>>
开发 Linux 后台服务进程
查看>>
Linux操作系统下如何生成软件依赖关系图
查看>>
程序员,如何选择合适的程序语言
查看>>
linux下syslog使用说明
查看>>
ar和nm命令的使用
查看>>
__func__标识符
查看>>
define小结
查看>>
C99标准更新
查看>>
c语言中的内存对齐
查看>>