一. 深入模板
(1). 模板语法
view:{"HTML变量名" : "views变量名"}
HTML:{{变量名}} # 注意是双大括号
可以用”.“索引取出对应的元素
可以用”.“键取出对应的值
(2). 过滤器
{{ 变量名 | 过滤器:可选参数 }}
例如:
{{ name|lower }}
{{ name }} 变量被过滤器 lower 处理后,文档大写转换文本为小写。
过滤管道可以被套接,也就是说上一个过滤器管道的输出可以作为下一个管道的输入。
比如:{{ my_list|first|upper }} 的作用就是把第一个元素大写。
当然,有些过滤器是有参数的,需要用双引号(“ ”)来包含它。
比如:{{ bio|truncatewords:“30” }} 这里将显示bio变量的前三十个元素。
常用的过滤器有:length, default, date等等
1). default
作用:为变量提供一个默认值
如果变量的值是False的话,就使用默认值。
比如: {{ name|default:“cannot find the website” }}
2). length
作用:返回对象的长度,适用于字符串和列表。
字典返回的是键值对的数量,集合返回的是去重后的长度。
比如:{{ name|length }}
3). date
作用:根据给定格式对一个日期变量进行格式化。
格式 Y-m-d H:i:s返回 年-月-日 小时:分钟:秒 的格式时间。
比如:{{ time|date:“Y-m-d” }}
(3). 标签
因为标签有点多,个人又比较懒,因此把它放在一份代码里展示了。
farther.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<h1>{{ name }}</h1>
<p>
{%if num > 90 and num <= 100 %} # 判断
优秀
{% elif num > 60 and num <= 90 %}
合格
{% else %}
一边玩去~
{% endif %}
</p>
<p>
{% for i in list %} # 循环
{{ i }}
{% empty %}
空空如也~
{% endfor %}
</p>
</body>
</html>
views.py:
from django.shortcuts import render
def hello_world(request):
conf_name = 'This is my website!!!'
views_name = 88
views_list = ["菜鸟教程", "菜鸟教程1", "菜鸟教程2", "菜鸟教程3", ]
return render(request, 'farther.html', {'name': conf_name, 'num': views_name, 'list': views_list})
接着在浏览器中运行就可以看到相关的页面了。
(⊙o⊙)…,因为没加CSS和JS,页面略显简陋,问题不大。
(4). 模板继承
模板可以用继承的方式来实现复用,减少冗余内容。
网页的头部和尾部内容一般都是一致的,我们就可以通过模板继承来实现复用。
父模板用于放置可重复利用的内容,子模板继承父模板的内容,并放置自己的内容。
对于父模板:
{% block 名称 %}
预留给子模板的区域,可以设置设置默认内容,注意不同地方的默认值不能相同
{% endblock 名称 %}
对于子模板:
{% extends "父模板路径"%}
子模板设置父模板留着的内容,可以使用如下代码:
{ % block 名称 % }
内容
{% endblock 名称 %}
下面来实操一波,在templates文件夹下创建一个新的H5文件:base.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<h1>Hello World!</h1>
<p>Test for parent and child template </p>
{% block mainbody %}
<p>original</p>
{% endblock %}
</body>
</html>
在farther.html加上以下代码:
{%extends "base.html" %}
{% block mainbody %}
<p>继承了 base.html 文件</p>
{% endblock %}
注意:这几句代码一定要放在第一行或者下的第一行,不然就会报错滴。
打开网页就变成了这样
其他代码如果不删除的话,也是无效的,因为继承了父模板之后,就只显示父模板。
如果想让其他代码显示的话,可以全写在父模板里。