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设置路由的格式。


  • 相关阅读:
    Window 窗口类
    使用 Bolt 实现 GridView 表格控件
    lua的table库
    Windows编程总结之 DLL
    lua 打印 table 拷贝table
    使用 xlue 实现简单 listbox 控件
    使用 xlue 实现 tips
    extern “C”
    COleVariant如何转换为int double string cstring
    原来WIN32 API也有GetOpenFileName函数
  • 原文地址:https://www.cnblogs.com/lag1/p/13820808.html
Copyright © 2011-2022 走看看