Django——模板(Template)的使用(模板变量、模板标签、过滤器、注释)

Django 中的模板

模板的功能

​ 模板用于产生 html,控制页面上展示的内容,模板文件不仅仅是一个 html 文件,它包含两部分内容

  1. 静态内容:像 css、js、html
  2. 动态内容:用于动态生成一些网页内容,通过模板语言来生成

模板文件的使用

​ 通常是视图函数中使用模板产生 html 内容返回给客户端

  1. 加载模板文件,获取模板文件的内容,产生一个模板对象
  2. 定义模板上下文,给模板传递数据
  3. 模板渲染产生 html 页面内容,用传递的数据替换相应的变量,产生一个替换后的标准 html 内容
def index(request):
    temp = loader.get_template('login/index.html')
    context = {}
    res_html = temp.render(context)
    return HttpResponse(res_html)

模板文件的加载顺序

  1. 首先去配置的模板目录下面去找模板文件
  2. 去 INSTALLED_APPS 下面的每个应用下找模板文件,前提是应用中必须有 templates 文件夹

在这里插入图片描述

模板语言

​ 模板语言简称为 DTL(Django Template Language)

模板变量

​ 模板变量是由数字、字母、下划线、点组成的,不能以双下划线开头

使用模板变量

​ 模板变量通过{{ 模板变量名 }}这种方式使用

模板变量的解析顺序

​ 以{{ user.uname }}为例

  1. 首先把 user 当成一个字典,把 uname 当成键名,即对user['uname']进行取值
  2. 把 user 当成一个对象,把 uname 当成属性,即对user.uname进行取值
  3. 把 user 当成一个对象,把 uname 当成对象的方法,即对user.uname()进行取值

​ 再以{{ user.0 }}为例

  1. 首先把 user 当成一个字典,把 0 当成键名,即对user['0']进行取值
  2. 把 user 当成一个列表,把 0 当成下标,即对user[0]进行取值

​ 如果解析失败,则产生内容时用空字符串填充模板变量

​ 使用模板变量时,.前面的可能是一个字典,可能是一个对象,还可能是一个列表

def temp_var(request):
    my_dict = {'title' : 'dict_title'}
    my_list = ['1', '2', '3']
    user = UserLogin.objects.get(id=1)
    return render(request, 'login/temp.html', {'dict' : my_dict, 'list' : my_list, 'user' : user})
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模板变量</title>
</head>
<body>
使用字典属性:{{ dict.title }}<br>
使用列表元素:{{ list.1 }}<br>
使用对象属性:{{ user.uname }}
</body>
</html>

模板标签

​ 通过{% 代码段 %}的方式使用模板标签

for

{% for x in list %}
# 列表不为空时执行
{% empty %}
# 列表为空时执行
{% endfor %}

​ 可以通过{{ forloop.counter }}得到 for 循环当前遍历的次数

if

{% if 条件 %}
{% elif 条件 %}
{% else %}
{% endif %}
# 关系比较操作符:> < >= <= == !=
# 逻辑运算符:not and or

​ 注意,进行比较操作的时候,比较操作符的两边必须要有空格

​ 模板标签还有很多,可以在官网上查找

过滤器

​ 模板过滤器的作用就是对模板变量进行操作的

  • date:改变日期的显示格式
  • length:求长度,字符串、列表、元组、字典长度均可
  • default:设置模板变量的默认值

​ 格式:模板变量|过滤器:参数,例如:

{{ user.re_time|date:'Y年-m月-d日' }}

​ 同样,过滤器也还有很多,可以去官网上查询

模板注释

单行注释

{# 注释内容 #}

多行注释

{% comment %}
	注释内容
{% endcomment %}

​ 值得一提的是,html 中注释的内容,在浏览器的查看源代码功能中是可以看到的,而这种使用模板注释,是看不到的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章