zoukankan      html  css  js  c++  java
  • 个人主页

    时间分类:

    1.用mysql存储

      #date_format

     date_list = models.Article.objects.filter(blog=blog_obj).extra(
            select={"ctime": "date_format(create_time,'%%Y-%%m')"}).values("ctime").annotate(ct=Count("nid"))
       
    

    2.用db.sqlite 存储

      #strftime

    date_list = models.Article.objects.filter(blog=currentBlog).extra(
            select={"ctime":"strftime('%%Y-%%m-%%d',create_time)"}).values("ctime").annotate(ct=Count('nid'))
       
    

    前端展示:

    {% for item in date_list %}
           <li><a href="">{{ item.ctime }}({{ item.ct }})</a></li>
    {% endfor %}
    

    分类过滤查询

    urls.py

    url("^home/(?P<site>w+)/article/(?P<condition>(category)|(tag)|(date))/(?P<para>w+-?w*-?w*)", views.home),
    
    #考虑到 三类标签(特别是  date)
    

    views.py

    def home(request,*args,**kwargs):
    
        site = kwargs.get('site')
    
        #获取用户对象
        user = models.UserInfo.objects.filter(username=site).first()
    
        # if not user:  #没有此对象,返回 404
        #     return render(request,'NotFound.html')
    
    
        # 1.获取当前站点对象
        currentBlog = models.Blog.objects.filter(user=user).first()
    
        # 2.获取当前站点文章
        article_list =models.Article.objects.filter(blog=currentBlog)
        # print(article_list)
    
    
        #3.获取当前站点标签
    
        tag_list = models.Article.objects.filter(blog=currentBlog).values_list('tags__nid','tags__title').annotate(Count('tags__title'))
        # print('tag_list',tag_list)
    
    
        #4.查询当前站点的 Category下每一个分类下的名称以及对应的文章数
    
        category_list = models.Article.objects.filter(blog=currentBlog).values_list("category__nid", "category__title").annotate(
            cc=Count("nid"))
        # print('category_list',category_list)
    
    
        #获取datetime列表
    
        date_list = models.Article.objects.filter(blog=currentBlog).extra(
            select={"ctime":"strftime('%%Y-%%m-%%d',create_time)"}).values("ctime").annotate(ct=Count('nid'))
    
        # print(date_list)  #<QuerySet [{'ctime': '2017-09-08', 'ct': 5}, {'ctime': '2017-09-09', 'ct': 1}]>
    
    
    
    #----------------------------   分类过滤查询   --------------------------------
        print('!!!!***!!!!!!',kwargs)
        
        
    
        if kwargs.get("condition") :
    
            con=kwargs.get("condition")
    
            if con=="category":
    
                article_list = models.Article.objects.filter(blog=currentBlog,category_id=kwargs.get("para"))
                # print('article 过滤', article_list)
    
            elif con=='tag':
                article_list = models.Article.objects.filter(blog=currentBlog, tags__nid=kwargs.get("para"))
                # print('tag 过滤',article_list)
    
    
            else:
    
                # article_list = article_list.extra(
                #     # 使用了extra对日期进行查询。date_format是MySQL的日期处理函数。
                #     where=["strftime( '%%Y-%%m-%%d',create_time)='{0}'".format(kwargs.get("para"))]
                # )
    
                article_list = models.Article.objects.filter(blog=currentBlog). 
                                  extra(where=["strftime('%%Y-%%m-%%d',create_time)='{0}'".format(kwargs.get('para'))])
                print('date 过滤', article_list)
    
    
    
    
    
        return render(request,'home.html',{'article_list':article_list,
                                           'user':user,
                                           'tag_list':tag_list,
                                           'category_list':category_list,
                                           'date_list':date_list,
                                           'currentBlog':currentBlog})
    View Code

    .html

    <div class="panel panel-info">
                    <div class="panel-heading">标签分类</div>
                    <div class="panel-body">
                        <ul class="li_s">
                           {% for row in tag_list %}
                                <li><a href="/home/{{ user.username }}/article/tag/{{ row.0 }}">{{ row.1 }}&nbsp;({{ row.2 }})</a></li>
                           {% endfor %}
    
                        </ul>
                    </div>
                </div>
    
    
                <div class="panel panel-success">
                    <div class="panel-heading">随笔分类</div>
                    <div class="panel-body">
                        <ul class="li_s">
                            {% for row in category_list %}
                                <li><a href="/home/{{ user.username }}/article/category/{{ row.0 }}">{{ row.1 }}&nbsp;({{ row.2 }})</a></li>
                            {% endfor %}
    
    
    
                        </ul>
                    </div>
                </div>
    
    
    
                <div class="panel panel-info">
                    <div class="panel-heading">
                        <h3 class="panel-title">日期分类</h3>
                    </div>
    
                    <div class="panel-body">
                        <ul class="li_s">
                            {% for item in date_list %}
                                <li><a href="/home/{{ user.username }}/article/date/{{ item.ctime }}">{{ item.ctime }}({{ item.ct }})</a></li>
                            {% endfor %}
    
    
    
                        </ul>
                    </div>
                </div>
            </div>
    View Code
  • 相关阅读:
    direct path write 等待事件导致数据库hang
    Sql Server数据库视图的创建、修改
    MVC视图中Html.DropDownList()辅助方法的使用
    Ubuntu16.04下安装.NET Core
    Ubuntu16.04下部署golang开发环境
    win7环境下安装运行gotour【转载整理】
    一.Windows I/O模型之选择(select)模型
    Windos下的6种IO模型简要介绍
    编码介绍(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
    串口通信知识点详解
  • 原文地址:https://www.cnblogs.com/zhaochangbo/p/7474525.html
Copyright © 2011-2022 走看看