djiango自定义标签与过滤器

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 %}

返回单个对象:  #应重点掌握方法
@register.simple_tag
def sqlApplyPerm(userId):
    user = Users.objects.get(id=userId)
    return user
{%  sqlApplyPerm user.id as user2%}
{{ user2.username }}

#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 %}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值