Django用简单模板标签实现统计文章总数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/85488924

一 新建简单模板标签

1 简单模板标签的结构必要满足下列要求

2 编辑mysite/article/templatetags/article_tags.py模板标签

# template包含了很多与模板有关的类和方法
from django import template
# Library是template类的一个方法
# register包含了simple_tag方法
# 它将用于自定义标签
register = template.Library()

from article.models import ArticlePost

# 表明下面的代码是自定义的simple_tag
@register.simple_tag
def total_articles():
    # 返回文章对象的查询结果
    return ArticlePost.objects.count()

@register.simple_tag
def author_total_articles(user):
    # 返回某个作者的文章总数
    return user.article.count()

二 编辑mysite/templates/article/list/article_titles.html,引入简单模板标签,实现文章总数统计

{% extends "base.html" %}
{% block title %} 文章展示 {% endblock %}
<!--引入自定义标签,注意article_tags要与文件名一致-->
{% load article_tags %}
{% block content %}
<div class="row text-center vertical-middle-sm">
    <h1>阅读,丰富头脑,善化行为</h1>
    <!--total_articles就是article_tags中自定义的标签-->
    <p>这里已经有{% total_articles %}篇文章供你阅读</p>
</div>
<div class="container">
    {% for article in articles %}
    <div class="list-group">
        <!--调用ArticlePost中的get_url_path-->
        <a href="{{article.get_url_path}}" class="list-group-item active">
            <h4 class="list-group-item-heading">{{article.title}}</h4>
        </a>
        <!--article.author能够关联到User对象,然后获得该对象的username-->
        <!--增加超链接,用于得到该作者的所有文章-->
        <p class="list-group-item-text">作者:<a href="{% url 'article:author_articles' article.author.username %}">{{article.author.username}}</a></p>
        <!--文章的内容切下前70个字符,linebreaks表示原文中的换行HTML标记符继续产生效用-->
        <p class="list-group-item-text">概要:{{article.body|slice:'70'| linebreaks}}</p>
    </div>
    {% endfor %}
<!--引入分页模板-->
{% include "paginator.html" %}
</div>
{% endblock %}

三 编辑mysite/templates/article/list/author_articles.html,引入简单模板标签,实现某个作者文章总数的统计

{% extends "base.html" %}
{% load article_tags %}
{% load staticfiles %}
{% block title %}文章{% endblock %}
{% block content %}
<div class="row text-center vertical-middle-sm">
    <h1>阅读,丰富头脑,善化行为</h1>
</div>
<div class="container">
<div class="col-md-8">
    {% for article in articles %}
    <div class="list-group">
        <a href="{{article.get_url_path}}" class="list-group-item active"><h4 class="list-group-item-heading">{{article.title}}</h4></a>
          <p class="list-group-item-text">作者:<a href="{% url 'article:author_articles' article.author.username %}">{{article.author.username}}</a></p>
           <p class="list-group-item-text">概要:{{article.body|slice:'70'|linebreaks}}</p>
    </div>
    {% endfor %}
{% include "paginator.html" %}
</div>
<div class="col-md-4">
<div>
    <!--显示作者的图片-->
    {% if userinfo.photo %}
    <img src="{{ userinfo.photo | striptags }}" class="img-circle" id="my_photo" name="user_face">
    {% else %}
    <img name="user_face" src="{% static 'images/newton.jpg' %}" class="img-circle" id="my_photo">
    {% endif %}
</div>
<div>
    <!--显示用户相关信息-->
    <p>{{ user.username }}</p>
    <p>共发表文章{% author_total_articles user %}篇</p>
    {% if userinfo %}
    <p>{{ userinfo.company }}
    <p>{{ userinfo.aboutme }}</p>
{% else %}
<p>这个作者太懒了,什么也没有留下。</p>
{% endif %}
</div>
</div>
</div>
{% endblock %}

四 测试

1 统计文章总数

2 统计某作者文章总数

扫描二维码关注公众号,回复: 4730995 查看本文章

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/85488924
今日推荐