版权声明:学习是一种信仰。喜欢就拿去,送人玫瑰手有余香。 https://blog.csdn.net/huoyuanshen/article/details/83615858
from django import template #关键代码 register = template.Library() #关键代码 from django.db.models import Count from django.utils.safestring import mark_safe from article.models import ArticlePost import markdown #1、返回单个数字 # {% load article_tags %} 必须要有 @register.simple_tag def total_articles(): return ArticlePost.objects.count() # {% total_articles %} @register.simple_tag def author_total_articles(user): return user.article.count() # {% author_total_articles user %} #2、返回html代码 @register.inclusion_tag('article/list/lastest_articles.html') def latest_articles(n=5): lastest_articles = ArticlePost.objects.order_by("-created")[:n] return {"latest_articles":lastest_articles} # {% latest_articles 4 %} #3、返回对象数组 @register.assignment_tag def most_commented_articles(n=3): return ArticlePost.objects.annotate(total_counts = Count('comments')).order_by('-total_comments')[:n] # {% most_commented_articles as most_comments %} # {% for comment_article in most_comments %} #这个是必须的,定义变量。 # {% endfor %} #4,自定义过滤器 @register.filter(name='markdown') #重命名,方便前端调用,遵从使用习惯 def markdown_filter(text): #不能是markdown,与import markdown冲突 return mark_safe(markdown.markdown(text)) # {% article.boyd | markdown %}