模板语法
本质上: 在html中写一些占位符,由数据对这些占位符进行替换和处理
视图函数的render内部:
- 1. 读取含有模板语法的html文件
- 2. 内部进行渲染(模板语法执行并替换数据),最终得到只包含html标签的字符串
- 3. 将渲染(替换)完成的字符串返回给用户的浏览器
1. 在视图函数中返回参数:1. request;2. html文件;3. {参数}
return render(request, "tpl.html", {"n1": name, "n2": roles})
2. 模板语法
- 取单个值
{{ n1 }}
- 根据下标获取列表的值
{{ n2.0 }}
- 根据键获取字典得值
{{ n3.name }}
- 获取列表中字典的值
{{ n4.1 }}
{{ n4.1.name }}
- 循环获取列表的值
{% for item in n2 %}
<span>{{ item }}</span>
{% endfor %}
- 循环获取字典的值: keys,values,items
{% for k,v in n3.items %}
<li>{{ k }}={{ v }}</li>
{% endfor %}
- 循环获取列中中字典的值
{% for item in n4 %}
<div> {{ item.name}} {{item.salary}}</div>
{% endfor %}
- 条件判断语句 if...else
{% if n1 != "coco" %}
<h1>哈哈哈</h1>
{% else %}
<h1>嘻嘻嘻</h1>
{% endif %}
- 条件判断语句 if...elif...else
{% if n1 == "coco" %}
<h1>哈哈哈</h1>
{% elif n1 == "xxx" %}
<h1>嘻嘻嘻</h1>
{% else %}
<h1>嘻嘻嘻</h1>
{% endif %}
案例
- 视图里创建函数发送接口请求获取参数
def news(request):
# 1. 定义一些脚本(字典或列表)或者渠数据库,网络请求去获取页面
# 2. 向地址发送请求
# 第三方模块requests(pip install requests)
import requests
res = requests.get(url)
data_list = res.json()
return render(request, "news.html", {"news_list": data_list})
- html 中循环使用
{% for item in news_list %}
<li>id:{{ item.id }} name:{{ item.name }}</li>
{% endfor %}