WSGI和Django模板系统

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:”_”}}
在这里插入图片描述注意事项:

  1. '|'左右没有空格
  2. 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名称
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值