注意:前端有aaa变量,后端没有aaa变量,存在p标签,但是显示不出来

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义

 有p标签,我们可以指定默认值,在没有其他内容的时候

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_02

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_03

过滤器有60多种,有点多,用到的时候再记和查

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_04

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_05

结果:

显示是acd

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_06

 

看长度

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_07

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_08

查看文件大小:

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_09

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_10

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_11

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_12

view.py文件中的

name2='acd'

html中

<p>{{ name2|slice:'0:1' }}</p>

结果:

a  #注意这个也是顾头不顾尾

cut测试:

name3="I am donggua!"

去掉空格:

<p>{{ name3|cut:' ' }}</p>

html中:

<p>{{ name3|truncatechars:6 }}</p>

结果:

I a...   (3个点,也在6个字符之内)

 

测试:
<p>{{ name3|truncatewords:1 }}</p>
结果:(以空格进行划分)
I ...

 

 

truncatechars是以字符划分
truncatewords是以单词进行划分.

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_13

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_14

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_15

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_16

上边浏览器中显示的只是字符串

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_17

通过安全处理

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_18

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_19

点击"你好2",回到最上边.

 

2-2safe过滤

safe是xss攻击,可能存在攻击,不停攻击,浏览器限制这种用户的行为,浏览器对提交的所有提交的内容,全部变成字符串.

safe表示,我们这个标签是安全的,给我正常显示就可以了!!

具体操作,见上边bbb.

 

2-3for if with标签

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_20

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_21

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_22

 结果:

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_23

翻转的过程:

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_24

结果:

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_25

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_26

结果:

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_27

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_28

上边这个从1开始计数,三次循环得到下面的结果:(优点类似枚举)

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_29

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_30

上边的方法表示从0开始

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_31

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_32

反转

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_33

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_34

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_35

判断是不是第一次(最后一次)循环first,last

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_36

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_37

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_38

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_39

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_40

 

parentsloop(字典里边嵌套列表)

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_41

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_42

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_43

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_44

结果:

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_45

双循环+if判断

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_46

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_47

 

在内层看外层的for循环

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_48

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_49

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_50

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_51

代表第二层循环

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_52

 

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_53

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_54

如果是个空列表

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_55

 显示的结果是:什么都不会显示的

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_56

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_57

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_58

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_59

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_60

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_61

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_62

 

 with:

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_63

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_64

 

2-4csrf_token解释

settings.py里边的,这是一个中间件安全认证机制 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_65

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_66

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_67

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_68

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_69

注意,要解开上边的中间件认证,

输入用户名&&密码,提交

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_70

目的:防止不良的请求,想办法应用上这个安全认证

如何解除,这个安全认证机制???在form表单中加入即可

{% csrf_token %}

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_71

这样就可以成功通过了,具体加了什么呢?后台有地方加了这些键和值

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_72

在后台存着这个东西,进行验证,是这个提交的.爬虫可以模拟请求也可以模拟post请求,必须按照人家正常的页面提交.

他的地盘他做主,在后台某个位置,存在着和这个键值对相同的东西

爬虫

先写个认证

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_73

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_74

 下图说明,拿到了这个内容,但是这些内容禁止访问.

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_75

如果去掉中间件认证机制,也就是注释掉,运行显示,登录成功

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_76

每次刷新,是新的内容

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_77

后边将cookie会涉及到,主要是这个东西,会保存在后台的某个位置,

做爬虫我们可以考虑,先获取,在发送请求登录.

 

2-5csrf_token图解

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_78

2-6模板渲染

 好多页面都是一样的,我们怎么处理相同的东西???

写商城,首页index,订单页,个人中心

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_79

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_html_80

base.html 也就是母版页

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="content-Type" charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width" ,initial-scale="1">
<!--上边这个表示手机版的调整尺寸-->
<!--上述2个meta标签"必须"放在最前面,任何其他内容都必须跟随其后-->
<title>
{% block title %}
母版的头信息
{% endblock %}
</title>
<style>
body{
padding: 0;
margin: 0;
}
.nav{
background-color: red;
height: 40px;
}
.left_list div{
width: 100px;
height: 20px;
background-color: pink;
border-bottom: 1px solid black;
}
.left_list{
float: left;
width: 100px;
}
.content{
float: right;
width: 600px;
height: 100px;
}
</style>
</head>
<body>
<div class="nav">
{#导航栏#}
<a href="">新闻</a>
<a href="">网页</a>
<a href="">图片</a>
</div>

<div class="left_list">
<div><a href="/index/">首页</a></div>
<div><a href="/order/">订单页</a></div>
<div><a href="/user/">个人中心</a></div>
</div>

<div class="content">
{% block content %}
母板预留的地方
{% endblock %}
</div>

</body>
</html>

View Code

index.html

{% extends 'base.html' %}
{#一句话继承母版页面#}
{#继承的块是可以自定义的#}
{% block title %}
首页
{% endblock %}

{% block content %}
<a href="">首页</a>
<span>首页介绍</span>

{% endblock %}

View Code

usercenter.html

{% extends 'base.html' %}
{#一句话继承母版页面#}
{#继承的块是可以自定义的#}
{% block title %}
个人中心
{% endblock %}
{% block content %}
个人中心页面
{% endblock %}

View Code

order.html

{% extends 'base.html' %}
{#一句话继承母版页面,必须写在首行#}
{#继承的块是可以自定义的#}
{#可以多留一些钩子#}
{% block title %}
订单
{% endblock %}
{% block content %}
订单页面
{% endblock %}

View Code

1.继承必须写在首行

2.钩子越多越好,越灵活

如何保留母版中的内容?

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_81

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_82

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_83

 

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_母版页_84

{{ block.super }}放在前面,就在前面显示,放在后边,就在后边显示

 3.不能重名

 4.

 

巨蟒python全栈开发django4:url反向解析图解&&模板渲染2_自定义_85