Django思维导图
2018-11-20 13:46:30 1 举报
AI智能生成
Django-WEB框架学习
作者其他创作
大纲/内容
WEB应用
Django简介
MVC与MTV模型
MVC模型
MTV模型
Django下载与基本命令
Django下载
pip3 install django
创建工程文件
django-admin.py startproject mysite
创建应用
python manage.py startapp blog
启动项目
python manage.py runserver 8080
Django实现简单示例
配置路由
视图函数
html模板
Django视图层
视图层运行流程
示例
流程说明
注意
HttpRequest对象
request属性
request常用方法
HttpResponse对象
render()
request: 用于生成响应的请求对象。
template_name:要使用的模板的完整名称,可选的参数
context:添加到模板上下文的一个字典。默认是一个空字典。如果字典中的某个值是可调用的,视图将在渲染模板之前调用它
redirect()
def my_view(request):
...
return redirect('/some/url/')
...
return redirect('/some/url/')
key:两次请求
HttpResponse()
Django模型层
ORM简介
单表操作
1 创建模型
2 更多字段和参数
参数
null
blank
default
primary_key
unique
choices
字段
CharField
IntegerField
FloatField
AutoField
BooleanField
TextField
EmailField
DateField
DateTimeField
ImageField
FileField
URLField
NullBooleanField
SlugField
XMLField
FilePathField
IPAddressField
CommaSeparatedIntegerField
3 settings配置
数据库配置
注意事项
添加表纪录
方式一
方式二
查询表纪录
all()
filter(**kwargs)
get(**kwargs)
exclude(**kwargs)
order_by(*field)
reverse()
count()
first()
last()
exists()
values(*field)
values_list(*field)
distinct()
双下划线的模糊查询
删除表纪录
删除方法
修改表纪录
Book.objects.filter(title__startswith="py").update(price=120)
多表操作
创建模型
作者模型
代码实例
作者详细模型
代码实例
出版商模型
代码实例
书籍模型
代码实例
注意事项
添加表纪录
一对多
方式1:
方式2:
多对多
常用api
基于对象的跨表查询
一对多查询(Publish 与 Book)
正向查询(按字段:publish):
反向查询(按表名:book_set):
一对一查询(Author 与 AuthorDetail)
正向查询(按字段:authorDetail)
反向查询(按表名:author)
多对多查询 (Author 与 Book)
正向查询(按字段:authors)
反向查询(按表名:book_set)
注意
基于双下划线的跨表查询
一对多查询
多对多查询
一对一查询
进阶练习(连续跨表)
related_name
聚合查询与分组查询
聚合
aggregate(*args, **kwargs)
分组
annotate()为调用的QuerySet中每一个对象都生成一个独立的统计值(统计方法用聚合函数)
总结
跨表分组查询本质就是将关联表join成一张表,再按单表的思路进行分组查询
F查询与Q查询
F查询
代码实例
Q查询
代码实例
Django组件
分页器
view
index.html
扩展
forms组件
校验字段功能
渲染标签功能
显示错误与重置输入信息功能
局部钩子与全局钩子
局部钩子
全局钩子
cookie与session组件
会话跟踪技术
Cookie概述
Cookie规范
Cookie大小上限为4KB
一个服务器最多在客户端浏览器上保存20个Cookie
一个浏览器最多保存300个Cookie
Cookie与HTTP头
Cookie:请求头,客户端发送给服务器端
格式:Cookie: a=A; b=B; c=C。即多个Cookie用分号离开; Set-Cookie:响应头,服务器端发送给客户端
一个Cookie对象一个Set-Cookie: Set-Cookie: a=A Set-Cookie: b=B Set-Cookie: c=C
Cookie的覆盖
django中的cookie语法
session
django中session语法
session配置
用户认证组件
auth模块
authenticate()
login(HttpRequest, user)
logout(request) 注销用户
User对象
user对象的 is_authenticated()
用户登陆后才能访问某些页面
如果用户没有登录就访问该页面的话直接跳到登录页面
用户在跳转的登陆界面中完成登陆后,自动访问跳转到之前访问的地址
方法1
方法2
创建用户
check_password(passwd)
修改密码
中间件
中间件的概念
Django的中间件的定义
自定义中间件
process_request
process_response
process_exception
process_view
应用案例
做IP访问频率限制
某些IP访问服务器的频率过高,进行拦截,比如限制每分钟不能超过20次。
URL访问过滤
如果用户访问的是login视图(放过)
如果访问其他视图,需要检测是不是有session认证,已经有了放行,没有返回login,这样就省得在多个视图函数上写装饰器了!
如果访问其他视图,需要检测是不是有session认证,已经有了放行,没有返回login,这样就省得在多个视图函数上写装饰器了!
HTTP协议
特性
无状态保存
HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理
无连接
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间
http应用层协议
http协议是基于TCP/IP协议之上的应用层协议
请求与响应
请求从客户端发出,最后服务器端响应该请求并返回
请求协议与响应协议
请求协议
请求格式
方法+URL+协议版本+请求首部字段
请求方式
GET
GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的请求体中
GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制
POST
响应协议
响应格式
协议版本+状态码+状态码原因短语+响应首部字段
响应状态码
响应状态码有5种类型
WEB框架
wsgiref模块
最简单的实现方式
自制简易web框架
model.py
manage.py
urls.py
views.py
login.html
backend.html
Django路由层
路由配置
配置示例
注意事项
若要从URL中捕获一个值,只需要在它周围放置一对圆括号
不需要添加一个前导的反斜杠,因为每个URL都有。例如,应该是^articles 而不是 ^/articles。
每个正则表达式前面的'r' 是可选的但是建议加上。它告诉Python 这个字符串是“原始的” —— 字符串中任何字符都不应该转义
有名分组
示例
特点
分发
示例
反向解析
url
模板
python
注意事项
名称空间
Django的path
基本示例
使用尖括号(<>)从url中捕获值。
捕获值中可以包含一个转化器类型(converter type),比如使用 <int:name> 捕获一个整数变量。若果没有转化器,将匹配任何字符串,当然也包括了 / 字符
无需添加前导斜杠
path转化器
str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
int,匹配正整数,包含0
slug,匹配字母、数字以及横杠、下划线组成的字符串
uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
path,匹配任何非空字符串,包含了路径分隔符
注册自定义转化器
regex 类属性,字符串类型
to_python(self, value) 方法,value是由类属性 regex 所匹配到的字符串,返回具体的Python变量值,以供Django传递到对应的视图函数中
to_url(self, value) 方法,和 to_python 相反,value是一个具体的Python变量值,返回其字符串,通常用于url反向引用
Django模板层
变量
过滤器
语法
default
length
filesizeformat
date
slice
truncatechars
safe
标签
for标签
遍历每一个元素
遍历一个字典
for ... empty
if 标签
with
自定义标签和过滤器
模板继承
使用注意
Django与Ajax
Ajax简介
同步交互
异步交互
Ajax优点
基于jquery的Ajax实现
文件上传
请求头ContentType
application/x-www-form-urlencoded
multipart/form-data
application/json
基于form表单的文件上传
模板部分
视图部分
基于Ajax的文件上传
视图
请求头
0 条评论
下一页