Django 模板函数
在模板中的函数是只需要函数名,不用加括号,自动执行
在前端中的函数
不用加括号,函数自动执行
前端
1 2 3 4 5 6 7 8 9 10 11
| {% for item in userinfo.keys %} <h3>{{ item }}</h3> {% endfor %} {% for item in userinfo.values %} <h3>{{ item }}</h3> {% endfor %} {% for k,v in userinfo.items %} <h3>{{ k }}-{{ v }}</h3> {% endfor %}
|
后台,
后台发送的是字典
1 2 3 4
| def test(request): return render(request,'test.html',{ 'userinfo':{'k1':'v1','k2':'v2'} })
|
转换大写
1
| {{ name|upper }} {# 大写 #}
|
本质是调用的Python的函数
1 2 3 4 5
| @register.filter(is_safe=False) @stringfilter def upper(value): """Converts a string into all uppercase.""" return value.upper()
|
模板中自定义函数
实现步骤:
simple_filter
filter只能传递2个参数
可以用作条件判断,复杂的条件判断直接在simple_tag的函数中写
1 2 3 4 5 6 7
| from django import template register = template.Library() @register.filter() # 使用这个装饰器 def my_upper(value): return value.upper()
|
1 2 3 4 5 6 7 8 9 10 11
| {% load xx %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {{ name|my_upper }} </body> </html>
|
接收多个参数
1 2 3
| @register.filter() def my_upper(value,arg): return value+arg
|
1
| {{ name|my_upper:"12456" }} 后面用冒号传递,不能用空格
|
simple_tag
simple_tag能传递多个参数,
引入的方式是和filter不同的e
1 2 3 4 5 6 7
| from django import template register = template.Library() @register.simple_tag() def my_lower(value): return value.lower()
|
1 2 3 4 5 6 7 8 9 10 11
| {% load xx %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {% my_lower "aABDJ" %} </body> </html>
|
多个参数
1 2 3
| @register.simple_tag() def my_add(value,a1,a2,a3): return value+a1+a2+a3
|
1
| {% my_add "he" "llo" "wo" "rld" %}
|
总结:
1 2 3 4 5
| - simple_filter - 最多两个参数,方式: {{第一个参数|函数名称:"第二个参数"}} - 可以做条件判断 - simple_tag - 无限制: {% 函数名 参数 参数%}
|
include 组件
1
| {% include 'pub.html' %}
|