前置:

前端框架使用layui,请下载layui到static文件下。

模板的本质

我们在浏览器中所见到的本质,也就是源代码,本质是一个html文件。而模板就是对某些共性一致的html文件的抽象,以便我们能动态的生成html文件。这里要划重点的是动态两个字。

上下文变量

上下文变量是一个枢纽,它一端链接python中的变量,一端要实例化(渲染)成相应的字符串。而python到模板变量的传递,python提供了两种方式,一是直接把模板变量实例化成httpsponse对象,一种是通过render函数。模板变量的使用则通过{{ 变量名 }}。
先通过实例来说明。
将app01——->view.py的index改写成如下。

  1. from django.shortcuts import render
  2. from django.http import HttpResponse
  3. def index(request, year=2020):
  4. context = {'one': '生活笔记', 'two': '技术杂谈'}
  5. return render(request, 'index.html', context)

在templates的路径下新建index.html。写入下面代码。

  1. {% load static %}
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="utf-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  7. <title>开始使用layui</title>
  8. <link rel="stylesheet" href="{% static 'layui/css/layui.css' %}">
  9. </head>
  10. <body>
  11. <ul class="layui-nav" lay-filter="">
  12. <li class="layui-nav-item"><a href="">{{ one }}</a></li>
  13. <li class="layui-nav-item layui-this"><a href="">{{ two }}</a></li>
  14. </ul>
  15. <script src="{% static '/layui/layui.js' %}"></script>
  16. </body>
  17. </html>

注:这段代码改写至layui的官方文档。

标签

if/else标签

  1. {% if condition %}
  2. display
  3. {% endif %}

for标签

for标签允许我们在一个序列上迭代。

  1. {% for athlete in athlete_list %}
  2. {{ athlete }}
  3. {% endfor %}

给标签增加一个 reversed 使得该列表被反向迭代

  1. {% for athlete in athlete_list reversed %}
  2. ...
  3. {% endfor %}

ifequal/ifnotequal 标签

ifequal标签比较两个值,当他们相等时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。
ifnoteqal标签反之。

过滤器

过滤器可以在变量被显示前修改它。过滤器使用管道字符。

自定义标签和过滤器