【django学习-11】模板3:自定义标签与过滤器

  • 前言:Django 虽然内置了二十多种标签和六十多种过滤器,但是为了给 Web 开发者提供更好使用体验,Django 也提供了自定义标签与过滤器的功能。当内置标签与过滤器满足不了实际业务的需求,那么我们就可以通过自定义的方式去实现,在本节我们将对如何实现自定义标签进行讲解。

  • 操作步骤

    • 1、在app中创建templatetags模块(必须的)
    • 2、创建任意 .py 文件,如:my_tags.py
from django import template

register = template.Library()   #register的名字是固定的,不可改变


@register.filter
def filter_multi(v1,v2):
    return  v1 * v2


@register.simple_tag
def simple_tag_multi(v1,v2):
    return  v1 * v2
  • 3、在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tags.py :
  • 4、使用simple_tag和filter(如何调用)
def tag(req):
    num = 10
    #L = [1,22,333,4444,55555]
    #html = "<h2>这是一个标签</h2>"
    return render(req,"tag.html",locals())

templates/tag.html
{% load my_tags %}
{#引入自定义标签或者过滤器#}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{ num|filter_multi:5 }}
{#最多带两个参数,一个为变量,冒号后只能一个参数#}

{% simple_tag_multi num 10 %}
{#参数不限,但不能放在if for语句中#}
</body>
</html>
  • 5、在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag
posted @ 2022-09-07 22:44  Tony_xiao  阅读(69)  评论(0)    收藏  举报