Django(5)--自定义过滤器和标签

版权声明:学而不思则罔,思而不学则殆 https://blog.csdn.net/weixin_43422505/article/details/83210956
  1. 在app下或者项目的根目录下,新建包文件:templatetags(固定)
  2. 在这个包里面新建一个.py文件
    在这里插入图片描述
  • 导入模块
from django import template
  • 先创建一个注册器,用于注册自定义的过滤器
register=template.Library( )
  • 自定义过滤器
  • 只要携带@register就可以实现注册了.后面跟你注册的过滤器名字
@register.filter( )
def customtagfilter(request):
    return render(request,template_name='index.html',context={'name':'zhangsan'})
  • 过滤器的写法
def filter_chars(value,arg):
    '''
    该过滤器可以实现对字符串的切片功能
    :param value:这个值是视图函数给模板传递的原始数据
    arg:可以通过模板传值,自定义切片
    :return:就是处理之后的数据
    '''
    return value[0:arg] +'...'
  • 模板需要引用
{% load customtags %}
  • index.html
<body>
        <p>{{ name | filter_chars:3 }}</p>
</body>
  • 通过端口查看

在这里插入图片描述

  • 自定义标签
    simple_tag这种类型的标签不能使用过滤器
@register.simple_tag
def html_tag(str, str1):
    print('====', str, str1)
    if str == "input":
        return '<input type="text" name="username" placeholder="输入密码"></input>'
    return '<p>自定义的P标签</p>'
  • index.html
{% autoescape off %}
    {% html_tag "input" "p" %}
    {% html_tag "p" "p" %}
{% endautoescape %}

猜你喜欢

转载自blog.csdn.net/weixin_43422505/article/details/83210956