Django学习笔记--2

Django--Day02

  • 一、过滤器
    • 1、default
    • 2、Length
    • 3、Slice
    • 4、Date
    • 5、Safe
    • 6、Cut
    • 7、Join
  • 二、标签
    • 1、for标签
    • 2、for...empty标签
    • 3、if 标签
    • 4、if ... else 标签
    • 5、if...elif...else 标签
    • 6、load 和 static 标签
  • 三、模板继承
    • 1、定义母板
    • 2、继承母板
  • 四、组件
  • 五、路由
    • 1、路由系统基本格式
    • 2、参数说明
    • 3、正则表达式详解
    • 4、正则表达式分组及分组命名匹配
      • (1)分组匹配:
      • (2)分组命名匹配:
    • 5、视图函数中指定默认值
    • 6、传递额外参数给视图函数
    • 7、URL反向代理
    • 8、URL反向解析带参数

一、过滤器

在Django的模板语言中,通过使用 过滤器 来改变变量的显示。(注:过滤器是函数)
过滤器的语法: {{ 变量名|过滤器名称:参数 }}
使用管道符"|"来应用过滤器。管道符两侧无空格
常见的几种过滤器:

1、default

如果一个变量是false或者为空,使用给定的默认值。 否则,使用变量的值。
Django学习笔记--2_第1张图片
Django学习笔记--2_第2张图片

2、Length

返回值的长度,作用于字符串和列表。
Django学习笔记--2_第3张图片
Django学习笔记--2_第4张图片

3、Slice

切片 格式:
{value|slice:“2:-1”}}
在这里插入图片描述
Django学习笔记--2_第5张图片

4、Date

*日期格式化过滤器 *
格式:

{{ value|date:"Y-m-d H:i:s"}}

在这里插入图片描述

5、Safe

Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。
Django学习笔记--2_第6张图片
Django学习笔记--2_第7张图片

6、Cut

移除value中所有的与给出的变量相同的字符串
格式:

{{ value|cut:' ' }}

如果value为’i love you’,那么将输出’iloveyou’.
在这里插入图片描述
Django学习笔记--2_第8张图片

7、Join

使用拼接符连接列表,例如Python的str.join(list)
格式:

{{value|join:”_”}}

Django学习笔记--2_第9张图片

二、标签

使用Django中的标签可以在模板中做一些简单的逻辑判断。
标签和{%%}配合使用。

1、for标签

格式:
{%for 临时遍历 in 序列%} … {%endfor%}
Django学习笔记--2_第10张图片
Django学习笔记--2_第11张图片
for循环可用的一些参数:

Variable Description
forloop.counter 当前循环的索引值(从1开始)
forloop.counter0 当前循环的索引值(从0开始)
forloop.revcounter 当前循环的倒序索引值(从1开始)
forloop.revcounter0 当前循环的倒序索引值(从0开始)
forloop.first 当前循环是不是第一次循环(布尔值)
forloop.last 当前循环是不是最后一次循环(布尔值)

2、for…empty标签

如果变量名不存在或者内容为空的时候显示{%empty%}中的内容,否则不执行。
格式:

{% for game in games %}
      ...
{% empty %}
	 ...
{% endfor %}

Django学习笔记--2_第12张图片
Django学习笔记--2_第13张图片

3、if 标签

格式:

{% if 判断条件 %}
    ...
{% endif %}

注: if 语句支持 and、or、==、<、>、!=、<=,>=,in、not in、is、is not判断。

4、if … else 标签

格式:

{% if name_length|length > 6 %}
...
{% else %}
    ...
{% endif %}

Django学习笔记--2_第14张图片

5、if…elif…else 标签

格式:

 {% if name_length|length > 6 %}
        ...
    {% elif age == 20 %}
        ...
    {% else %}
        ...
    {% endif %}

Django学习笔记--2_第15张图片

6、load 和 static 标签

当我们想在页面上使用一些静态资源例如图片、js、css 。这时候我们就要使用到static标签了。
例如在页面中显示一张本地图片。
操作步骤:
a. 新建一个文件夹来盛放静态资源,例如 static,为了和后面的static标签区分,这里使用 statics名称。
Django学习笔记--2_第16张图片
b. 将statics文件夹加载到python搜索路径中。
Django学习笔记--2_第17张图片
c. 在页面上最开始位置使用 {% load static %}即 load 标签来加载 static 标签。
Django学习笔记--2_第18张图片
d. 在要展示图片的地方 使用 {% static ‘图片路径’}
{% static ‘图片路径’} 表示使用
在这里插入图片描述
注:如果不想在每一个页面中都使用 {%load static %} ,可在settings.py中进行如下配置
Django学习笔记--2_第19张图片

三、模板继承

如果当我们浏览一个网站的时候发现里面的网页大部分都是相同的,这就说明这个网页的代码的可复用性很高,我们可以将这些重复部分的代码单独拿出来做成一个模板,而在每次想要实现相同功能的网页样式时都将这个模板进行套用,从而进行快速的页面开发。
例如某图书管理系统:
Django学习笔记--2_第20张图片

1、定义母板

将网页中内容与样式均相同的代码提取出来,单独存放在一个文件中,通常我们将它命名为’base’。
Django学习笔记--2_第21张图片
在代码块不相同的地方使用

{% block  ‘自定义名称’%}
{%endblock%}

来进行占位。
Django学习笔记--2_第22张图片

2、继承母板

在将要对模板功能进行扩展的网页代码前加上继承语句,指明继承了哪个模板。
语法:

{% extends 'base.html' %}

Django学习笔记--2_第23张图片

四、组件

可以将常用的页面内容如导航条,页尾信息等不变的组件可以保存在单独的文件中,然后在需要使用的地方按如下语法导入即可。
在这里插入图片描述
Django学习笔记--2_第24张图片
在这里插入图片描述
Django学习笔记--2_第25张图片
在这里插入图片描述

五、路由

1、路由系统基本格式

urlpatterns = [
    path( 要匹配的路径(可以是正则表达式), 视图函数, 参数, 别名)
]

Django学习笔记--2_第26张图片

2、参数说明

(1) 正则表达式:一个正则表达式字符串
(2) 视图函数:一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
(3) 参数:要传递给视图函数的默认参数(字典形式,可选)
(4) 别名:一个可选的name参数

3、正则表达式详解

(1) 在python中使用 ‘re_path’模块来写正则表达式
先引入,from django.urls import re_path
(2) 正则表达式的开始使用“^”表示。
(3) 正则表达式的结束使用“$”表示。
(4) “r” 为元字符串 防止正则表达式中的转义。
Django学习笔记--2_第27张图片

4、正则表达式分组及分组命名匹配

(1)分组匹配:

正则表达式分组匹配是通过小括号”()”来捕获URL中的值并以位置参数形式传递给视图。
在这里插入图片描述

(2)分组命名匹配:

分组命名正则表达式组的语法是

`(?Ppattern)`,

其中name是组的名称,pattern是要匹配的模式。如[0-9][a-zA-Z]
捕获的值作为关键字参数而不是位置参数传递给视图函数。
在这里插入图片描述
Django学习笔记--2_第28张图片

5、视图函数中指定默认值

在视图中指定默认值,可以在不输入具体的URL时,执行默认的值。
指定的值一定是字符串类型
在这里插入图片描述
在这里插入图片描述

6、传递额外参数给视图函数

在这里插入图片描述
在这里插入图片描述

7、URL反向代理

使用url反向代理,解决硬编码问题。
硬编码:硬编码数据通常只能通过编辑源代码和重新编译可执行文件来修改,尽管可以使用调试器或十六进制编辑器在内存或磁盘上进行更改。 硬编码的数据通常表示不变的信息,例如物理常量,版本号和静态文本元素。 另一方面,软编码数据对用户输入,HTTP服务器响应或配置文件等任意信息进行编码,并在运行时确定。
不使用反向代理:
浏览器访问index9,返回index9页面,点击超链接访问index10页面。
使用反向代理:
Django学习笔记--2_第29张图片
Django学习笔记--2_第30张图片
Django学习笔记--2_第31张图片
Django学习笔记--2_第32张图片
Django学习笔记--2_第33张图片
Django学习笔记--2_第34张图片

8、URL反向解析带参数

在这里插入图片描述
Django学习笔记--2_第35张图片
Django学习笔记--2_第36张图片
Django学习笔记--2_第37张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

你可能感兴趣的:(学习笔记)