zoukankan      html  css  js  c++  java
  • 上下篇博客,按月归档

    1.对比当前博客,得到上一篇或下一篇博客

    def blog_detail(request, blog_pk):
    context = {}
    blog = get_object_or_404(Blog, pk=blog_pk)
    context['previous_blog'] = Blog.objects.filter(created_time__gt=blog.created_time).last()
    context['next_blog'] = Blog.objects.filter(created_time__lt=blog.created_time).first()
    context['blog'] =blog
    return render(request, 'blog/blog_detail.html', context)
    通过filter筛选条件查找出符合的博客,查找出的结果是QuerySet和列表看起来一样,last()取到最后一篇。大于:__gt,大于等于:__gte,小于:__lt,小于等于:__lte,
    包含:__contains(加i忽略大小写),开头是:__startswith,结尾是:__endswith,其中之一:__in,范围:__range。exclude排除条件,与filter相反。
    条件中的双下划线:字段查询类型、外键拓展、日期拓展、支持链式查询

    在前端页面展示:
    <div class="blog-more">
    <p>上一篇:
    {% if previous_blog %}
    <a href="{% url 'blog_detail' previous_blog.pk %}">{{ previous_blog.title }}</a>
    {% else %}
    没有了
    {% endif %}
    </p>
    <p>下一篇:
    {% if next_blog %}
    <a href="{% url 'blog_detail' next_blog.pk %}">{{ next_blog.title }}</a>
    {% else %}
    没有了
    {% endif %}
    </p>
    </div>

    2.按月归档Django
    dates(field,kind,order='ASC')
    field字段,kind类型,order排序
    返回一个QuerySet
    context['blog_dates'] = Blog.objects.dates('created_time', 'month', order='DESC')
    根据博客创建时间的不同年份不同月份,返回日期列表 如果在10月的不同日期都创建了,只会返回10.1日。
    <QuerySet [datetime.date(2020, 10, 1)]>
    def blogs_with_date(request,year, month):
    blogs_all_list = Blog.objects.filter(created_time__year=year,created_time__month=month)
    根据前端传过来的年月筛选出所有博客
    context['blogs_with_date'] = '%s年%s月' % (year,month)
    给前端传入年月
    urlpatterns = [
    path('',views.blog_list,name='blog_list'),
    path('<int:blog_pk>/', views.blog_detail, name='blog_detail'),
    path('type/<int:blog_type_pk>/', views.blogs_with_type, name='blogs_with_type'),
    path('date/<int:year>/<int:month>', views.blogs_with_date, name='blogs_with_date'),
    ]
    url设置路由的格式。


  • 相关阅读:
    GenericServlet和HttpServlet有什么区别?
    什么是RMI?
    【WPF学习】第十八章 多点触控输入
    【WPF学习】第十七章 鼠标输入
    【WPF学习】第十六章 键盘输入
    【WPF学习】第十五章 WPF事件
    【WPF学习】第十四章 事件路由
    【WPF学习】第十三章 理解路由事件
    【WPF学习】第十二章 属性验证
    【WPF学习】第十一章 理解依赖项属性
  • 原文地址:https://www.cnblogs.com/lag1/p/13820808.html
Copyright © 2011-2022 走看看