1.在该应用(app)文件夹下面建立templatetags文件夹,在其中建立两个py文件,一是init.py,二是article_tags.py(自定义)文件。
2.在article_tags.py中键入如下代码:
from django import template
from django.db.models import Count
register = template.Library()
from article.models import ArticlePost
@register.simple_tag
def total_articles():
return ArticlePost.objects.count()
@register.simple_tag
def author_total_articles(u):
return u.article.count()
@register.inclusion_tag('article/list/latest_articles.html')
def latest_articles(n=5):
l_articles = ArticlePost.objects.order_by('-created')[:n]
return {'latest_articles': l_articles}
@register.assignment_tag
def most_commented_articles(n=3):
return ArticlePost.objects.annotate(total_comments=Count('comments')).order_by('-total_comments')[:n]
3.article/list/latest_articles.html中代码如下:
<ul>
{% for article in latest_articles %}
<li>
<a href="{{ article.get_url_path }}">{{ article.title }}</a>
</li>
{% endfor %}
</ul>
4.在使用自定义模板标签时,首先在模板文件中键入{% load article_tags %}
,接着可在适用的地方使用诸如{% total_articles %}
,{% latest_articles 4 %}
等标签。