-
前言: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 :{% load my_tags %}
- 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