WSGI
WSGI : Web Server Gateway Interface, Web服务器网关接口。是一种规范,
规范:web服务器应用和框架的使用。
Django自带的服务器应用 wsgiref 模块。
视图函数
(1) 函数名称 见名知意,
(2) 至少有一个形参(一般命名为request),因为浏览器请求的时候,服务端会将请求的数据封装到HttpRequest对象中。
(3) 向浏览器返回一段文本内容 使用 HttpResponse对象。
(4) 向浏览器返回html页面,使用 render对象,第一个参数是函数声明的形参(request),第二个参数是页面。
(5) 一般情况下,我们会将html页面放到templates目录下。(如果此目录不存在,可以手动创建)。
(6) 扩展:需要在settings.py中配置templates目录的路径。
① TEMPLATES=[{
‘DIRS’:[os.path.join(BASE_DIR,’templates’)]
}]
(7) views.py文件一般用来放置视图函数
Django模板系统(template)
主要作用:向页面中填充内容,即html页面
1,模板系统常用符号{{}}和{%%}
如果在模板中需要解析变量使用{{}}.
如果在模板中进行逻辑相关操作使用{%%}
注释 {# … #},单行注释。
2,.变量
在Django的模板系统中变量使用的语法:{{ 变量名 }}。
当模版引擎遇到变量,就会用值替换掉变量。
变量的命名可以是字母数字以及下划线 ("_")的组合。
变量名称中不能有空格或标点符号。
注意:key值的名称和模板中的变量名称相同。
locals() 内置函数: 获取全部的局部变量及其对应的值,然后封装成一个字典。因此可以在render的第三个参数直接使用locals()。
.点(.)的特殊含义
(1) 如果传递的是一个字典类型的数据,使用 变量名.key的形式获取对应的值。
(2) 如果传递的是一个对象类型的数据,使用 变量名.属性名(无参数并且有返回值的方法)。
(3) 如果传递的是一个列表类型的数据,使用 变量名.索引(从0开始)的形式获取列表中的元素。
注意事项:
如果使用的变量不存在, 它被默认设置为(空字符串) 。
2. Filters(过滤器)
在Django的模板语言中,通过使用 过滤器 来改变变量的显示。(注:过滤器是函数)
过滤器的语法: {{ 变量名|过滤器名称:参数 }}
使用管道符"|"来应用过滤器。
例如:{{ name|lower }}会将name变量应用lower过滤器之后再显示它的值。lower在这里的作用是将文本全都变成小写。
(1) 作用: 可以改变内容的显示、或者查看一些信息。
(2) 使用格式 {{变量名|过滤器:参数}}, 注意管道符“|”左右是没有空格的。
(3) 常用的过滤器
① lower
② length
③ safe
④ cut
⑤ join
⑥ default
(1).default
果一个变量是false或者为空,使用给定的默认值。 否则,使用变量的值。
{{ value|default:"nothing"}}
如果value没有传值或者值为空的话就显示nothing
(2).length
返回值的长度,作用于字符串和列表。
{{ value|length }}
返回value的长度,如 value=[‘a’, ‘b’, ‘c’, ‘d’]的话,就显示4.
(3).slice
切片
格式:{{value|slice:“2:-1”}}
(4).date
日期格式化过滤器
格式:{{ value|date:“Y-m-d H:i:s”}}
(5) .safe
Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。
比如:value = “点我”
格式:{{ value|safe}}
(6) .cut
移除value中所有的与给出的变量相同的字符串
格式:{{ value|cut:’ ’ }},如果value为’i love you’,那么将输出’iloveyou’.
(7) .join
使用拼接符连接列表,例如Python的str.join(list)
格式: {{value|join:”_”}}
注意事项:
- '|'左右没有空格
- django的模板语言中提供了大约六十个内置过滤器。
标签(tags)
使用Django中的标签可以在模板中做一些简单的逻辑判断。
标签和{%%}配合使用。
(1) 格式:{%标签%}
(2) for标签:和 python中的for循环,执行原理相同。
① 格式:
{%for 临时变量 in 变量%}
…
{%endfor%}
② forloop.counter 表示 索引从 1开始。
③ forloop.counter0 表示 索引从 0 开始。
(3) for empty 标签:
① 格式:
{%for 临时变量 in 变量%}
…
{%empty%}
…
{%endfor%}
② 执行流程:
如果变量不存在或者为空 则执行 empty中的内容。否则执行for循环体中的内容。
(4) If标签 和python中的if 判断执行流程相同。
① 格式:
{%if 条件表达式 %}
…
{%endif%}
1 ,for 标签
for循环可用的一些参数:
(2) .for…empty标签
如果变量名不存在或者内容为空的时候显示{%empty%}中的内容,否则不执行。
格式:
{% for game in games %}
…
{% empty %}
…
(3) .if 标签
格式:
{% if 判断条件 %}
…
{% endif %}
注: if 语句支持 and、or、==、<、>、!=、<=,>=,in、not in、is、is not判断。
4 if … else 标签
格式:
{% if name_length|length > 6 %}
…
{% else %}
…
{% endif %}
(5) .if…elif…else 标签
格式:
{% if name_length|length > 6 %}
…
{% elif age == 20 %}
…
{% else %}
…
{% endif %}
(6) .load 和 static 标签
当我们想在页面上使用一些静态资源例如图片、js、css 。这时候我们就要使用到static标签了。
例如在页面中显示一张本地图片。
操作步骤:
a. 新建一个文件夹来盛放静态资源,例如 static,为了和后面的static标签区分,这里使用 statics名称