zoukankan      html  css  js  c++  java
  • Django模版语言inclusion_tag的用法。

     

    inclusion_tag。它多用于一个HTML片段的。例如我写的一个BBS项目中。

    一个博主的主页面的左侧栏和查看博主某篇文章的页面的左栅栏的一样的。为了不用重复写同样的代码。且提高页面的扩展性。我的bbs的左侧栏就用了inclusion_tag来实现。

    首先要在项目的:

    在项目blog这个app下面创建一个templatetags文夹。这个文件夹的名字必顺是templatetags来命名的。然后在此文件夹下自定义一个matag.py文件。

    1.  
      from django import template
    2.  
      from blog import models
    3.  
      from django.db.models import Count
    4.  
       
    5.  
      register=template.Library()
    6.  
      @register.inclusion_tag('left_tag.html')
    7.  
      def left_panel(username):
    8.  
      user_obj = models.UserInfo.objects.filter(username=username).first()
    9.  
      blog = user_obj.blog
    10.  
      # 文章分类
    11.  
      category_article_list = models.Category.objects.filter(blog=blog).annotate(num=Count('article')).values('title', 'num')
    12.  
      # 标签分类
    13.  
      tag_article_list = models.Tag.objects.filter(blog=blog).annotate(num=Count('article')).values('title', 'num')
    14.  
      # 时间分类auth_group
    15.  
      time_archive_list = models.Article.objects.filter(user__username=username).extra(
    16.  
      select={'ym': 'DATE_FORMAT(create_time,"%%Y-%%m")'}
    17.  
      ).values('ym').annotate(num=Count('nid')).values('ym', 'num')
    18.  
       
    19.  
      return {
    20.  
      'username': username,
    21.  
      'category_article_list': category_article_list,
    22.  
      'tag_article_list': tag_article_list,
    23.  
      'time_archive_list': time_archive_list,
    24.  
      }

    然后写一个left_tag.html代码块。

    1.  
      <div class="panel panel-primary">
    2.  
      <div class="panel-heading">
    3.  
      <h3 class="panel-title">文章分类</h3>
    4.  
      </div>
    5.  
       
    6.  
      <div class="panel-body">
    7.  
      <ul class="panel-ul">
    8.  
      {% if not category_article_list %}
    9.  
      <li>没有此分类</li>
    10.  
      {% else %}
    11.  
      {% for category_article in category_article_list %}
    12.  
      <li><a href="/blog/{{ username }}/category/{{ category_article.title }}">{{ category_article.title }}({{ category_article.num }})</a></li>
    13.  
      {% endfor %}
    14.  
      {% endif %}
    15.  
      </ul>
    16.  
      </div>
    17.  
      </div>
    18.  
      <div class="panel panel-success">
    19.  
      <div class="panel-heading">
    20.  
      <h3 class="panel-title">标签分类</h3>
    21.  
      </div>
    22.  
      <div class="panel-body">
    23.  
      <ul class="panel_ul">
    24.  
      {% if not tag_article_list %}
    25.  
      <li>没有此分类</li>
    26.  
      {% else %}
    27.  
      {% for tag_article in tag_article_list %}
    28.  
      <li><a href="/blog/{{ username }}/tag/{{ tag_article.title }}">{{ tag_article.title }}({{ tag_article.num }})</a></li>
    29.  
      {% endfor %}
    30.  
      {% endif %}
    31.  
      </ul>
    32.  
      </div>
    33.  
      </div>
    34.  
      <div class="panel panel-info">
    35.  
      <div class="panel-heading">
    36.  
      <h3 class="panel-title">时间归档</h3>
    37.  
      </div>
    38.  
      <div class="panel-body">
    39.  
      <ul class="pane_ul">
    40.  
      {% if not time_archive_list %}
    41.  
      <li>没有此分类</li>
    42.  
      {% else %}
    43.  
      {% for time_archive in time_archive_list %}
    44.  
      <li><a href="/blog/{{ username }}/archive/{{ time_archive.ym }}">{{ time_archive.ym }}({{ time_archive.num }})</a></li>
    45.  
      {% endfor %}
    46.  
      {% endif %}
    47.  
      </ul>
    48.  
      </div>
    49.  
      </div>

    最后就简单了。一些页面在需要用到这个左侧栏的就加上下面的一小段代码就好了。

    1.  
      {% load mytag %}
    2.  
      {% left_panel username %}

    上面的代码中username是一个参数。

  • 相关阅读:
    这篇文章把短线操作技巧以及交易原则讲透了!
    炒股老手的妙招——卖出在周K线的顶部
    连续多阳低吸买入法需要哪些条件?
    2个实盘案例带你了解南玻量态选庄股法!
    如何通过筹码分布判断一个股票要不要做?
    股票指标公式高手是怎么通过指标变现的?
    股票回踩均线是什么意思?
    定宽不定宽盒子的居中解决办法和外边距塌陷问题
    JS 数据类型
    JS 事件总结
  • 原文地址:https://www.cnblogs.com/qunxiadexiaoxiangjiao/p/9564609.html
Copyright © 2011-2022 走看看