Django业务流程图:
T 代表模板 (Template):负责如何把页面展示给用户(html)。
1、views视图中返回模板
1.1 返回模板 文件
return render(request, 'index.html')
1.2 返回views视图的变量到模板中
return render(request, 'index.html', n) #传递变量n
return render(request, 'index.html', {'curtime':curtime, 'tableData': tableData}) #传递字典
1.3 返回views视图中所有变量到模板中
return render(request, 'index.html', locals())
2、模板变量
2.1 普通模板变量
{{variables}}
2.2 从URL获取模板变量
{%url 'urlvar' 2021%}
在html网页中定义:<div><a href="{% url 'urlvar' 2021 %}">2021 year</a></div>
urls.py的urlpatterns中定义:re_path('(?P<year>[0-9]{4}).html', views.year, name='urlvar'), #匹配到urlvar变量,然后匹配到2021.html,在 views.year视图中进行处理。
2.3 读取静态资源内容
{% static "css/index.css"%}
如:{% load static %} #使用static语句之前,需要先使用load static语句
<link rel="stylesheet" href="{% static 'css/index@2.15.0.css' %}" type="text/css">
<script type="text/javascript" src="{% static 'js/vue@2.6.12.js' %}"></script>
<script type="text/javascript" src="{% static 'js/index.2.15.0.js' %}"></script>
2.4 for遍历标签
{%for var in var_list%}
{%endfor%}
如:view视图返回return render(request, 'bookslist.html', n)
bookslist.html中显示:
{% for book in n %}
<div>bookname: {{ book.name }} <br>
author: {{ book.author }} <br>
stars: {{ book.stars }}
</div>
{% endfor %}
2.5 if判断标签
{%if var=xxx%}
{%endif%}
3、变量传入js脚本中
3.1 views视图返回变量,不能使用locals()返回所有变量,只能按实际情况返回具体指定的变量,如n
3.2 js脚本中按如下格式定义变量接收
var viewData = {{ n| safe }};
4、verbatim标签-不使用DTL的解析
默认在 DTL 模板中是会去解析那些特殊字符的。比如 {% 和 %} 以及 {{ 等。如果你在某个代码片段中不想使用 DTL 的解析引擎。那么你可以把这个代码片段放在 verbatim 标签中
如:{% verbatim %}
{{scope.row.username}}
{% endverbatim %}
参考:https://www.cnblogs.com/zheng-weimin/p/10171807.html
5、模板继承