模板语法
 本质上: 在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 %}