Django 模版变量
Django 模版语言的语法主要分为以下四个部分:
- 变量
- 标签
- 过滤器
- 注释
一、模版变量
1)变量的命名规范
Django对于模版变量的命名规范没有太多的要求,可以使用任何字母、数字和下划线的组合来命名,且必须以字母或下划线开头,但是变量名称中不能有空格或者标点符号。
2)模版的变量语法
四种不同的使用场景,分别如下:
- 索引index查询,如{{变量名.index}},其中index为int类型即索引下标;
- 字典查询方法,{{变量名.key}}其中key代表字典的键;
- 属性或者方法查询,如{{对象.方法/属性}}
- 函数调用
在views.py文件里:
def test1_html(request):
a = {}
a['name'] = '我的网站'
a['course'] = ['python','java','c++']
a['b'] = {'name':'我的网站','address':'http://c.biancheng.net/'}
a['test_hello'] = test_hello
a['class_obj'] = Website()
return render(request,'test.html',a)
def test_hello():
return "欢迎进入网站首页"
class Website:
def web_name(self):
return 'hello,我的网站'
在test.html模版内:
<p> 网站名字是{{ name }}</p>
<p> 课程包含{{ course.1 }}</p>
<p> 变量a是{{ b }} <p>
<p> a['address']是{{b.address}} </p>
<p> 函数fuction:{{ test_hello }}</p>
<p> 类实例化对象:{{class_obj.web_name}} </p>
3)模版传参语法格式
在视图函数中必须将变量封装到字典中才允许传递到模版上。
#方式1
def xxx_view(request)
dic = {
"变量1":"值1",
"变量2":"值2",
}
return render(request, 'xxx.html', dic)
#方式2
def xxx_view(request)
变量1=值1
变量2=值2
return render(request, 'xxx.html', locals())
提示:local()返回当前函数作用域内全部局部变量形成的字典,即将变量与值对应形成字典,并把这个字典作为locals()的返回值来使用。
二、标签讲解
1、if标签
Django的模版系统对标签的解释是在渲染的过程中提供相应的逻辑。语法如下:
{% if 条件表达式 %}
......
{% endif %}
注意:if标签结尾需要使用endif最为结尾。
2、for标签
for标签使用时也需要和endfor标签配合使用,但是多了一个可选的empty标签,比如用它来显示当列表不存在或者列表中元素为空的时候要显示的内容
2.1、forloop变量详解
在for标签还提供了内置变量forloop,我们可以访问这个变量的属性从而获取for循环迭代过程中的一些信息。forloop的属性主要有以下几个:
变量 | 描述 |
---|---|
forloop.counter | 用来计数,查看当前迭代第几个元素(从1开始索引) |
forloop.counter0 | 用来计数,查看当前迭代第几个元素(从0开始索引) |
forloop.revcounter | 表示当前循环中剩余的未被迭代的元素数量(从1开始索引) |
forloop.revcounter0 | 表示当前循环中剩余的未被迭代的元素数量(从0开始索引) |
forloop.first | 如果当前迭代的是第一个元素,则为True |
forloop.last | 如果当前迭代的是最后一个元素,则为True |
forloop.parentloop | 在嵌套循环中,用来引用外层循环的 forloop |
三、过滤器用法讲解
1、过滤器语法格式
过滤器作用是在变量输出时,对输出的变量值做进一步的处理。
过滤器跟模版标签一样,也是在模版中对函数进行调用。有内置过滤器,也可以自己定义过滤器,过滤器的语法格式如下:
{{ 变量 | 过滤器1:参数值1 | 过滤器2:参数值2 ... }}
过滤器 | 使用说明。 |
---|---|
length | 获取变量的长度,适用于字符串和列表。 |
lower/upper | 转换字符串为小写/大写形式。 |
first/last | 获取变量的首个/末尾元素。 |
add:'n' | 给变量值增加 n。 |
safe | 默认不对变量内的字符串进行html转义。 |
cut | 从给定的字符串中删除指定的值。 |
dictsort | 获取字典列表,并返回按参数中给定键排序的列表。 |
join | 用字符串连接列表,例如 Python 的 str.join(list)。 |
truncatewords | 如果字符串字符多于指定的字符数量,那么会被截断。 截断的字符串将以可翻译的省略号序列(“...”)结尾。 |
2、过滤器的实际应用
过滤器相比模版标签要简单的多,可以将其比作成python函数,传递参数给他处理就可以。当过滤器接收参数后对它进行处理,最终将处理结果返回到模版中,这就是整个过滤器的实现流程。