中间件详解,Django复习
day74 2018-05-21
课程安排
周一:	
	中间件
	auth模块+分析BBS项目需求(小组讨论把表结构设计出来)
1. 今日内容
	中间件:http://www.cnblogs.com/liwenzhou/p/8761803.html
1. URL的白名单 url = ["/xx/", "/oo/", "/haha/"]
		2. 登陆之后才能访问某些URL    之前使用装饰器
中间件的定义:
		wsgi之后 urls.py之前 在全局 操作Django请求和响应的模块!
中间件的使用:
		5个固定的方法
			process_request(self, request)
				执行顺序:
					按照注册的顺序(在settings.py里面设置中 从上到下的顺序)
				何时执行:
					请求从wsgi拿到之后
				返回值:
					返回None,继续执行后续的中间件的process_request方法
					返回response , 不执行后续的中间件的process_request方法
process_response
				执行顺序:
					按照注册顺序的倒序(在settings.py里面设置中 从下到上的顺序)
				何时执行:
					请求有响应的时候
				返回值:
					必须返回一个response对象
process_view(self, request, view_func, view_args, view_kwargs):
				执行顺序:
					按照注册的顺序(在settings.py里面设置中 从上到下的顺序)
				何时执行:
					在urls.py中找到对应关系之后 在执行真正的视图函数之前
				返回值:
					返回None,继续执行后续的中间件的process_view方法
					返回response,
process_exception(self, request, exception)
				执行顺序:
					按照注册顺序的倒序(在settings.py里面设置中 从下到上的顺序)
				何时执行:
					视图函数中抛出异常的时候才执行
				返回值:
					返回None,继续执行后续中间件的process_exception
					返回response,
process_template_response(self, request, response)
				执行顺序:
					按照注册顺序的倒序(在settings.py里面设置中 从下到上的顺序)
				何时执行:
					视图函数执行完,在执行视图函数返回的响应对象的render方法之前 
				返回值:
					返回None,继续执行后续中间件的process_exception
					返回response,
Django调用 注册的中间件里面五个方法的顺序:
			1. process_request
				urls.py
			2. process_view
				view
			3. 有异常就执行 process_exception
			4. 如果视图函数返回的响应对象有render方法,就执行process_template_response
			5. process_response
Django已经学过的知识点:
	1. Urls.py 路由系统:
正则
			分组匹配     --> 位置参数
			分组命名匹配 --> 关键字参数
分级路由
			include
给路由起别名
			name="xx"
反向解析url
			view
				from django.urls import reverse
reverse("xx", args=[1, 2, 3])
				reverse("xx", kwargs={”k": "v"})
自取其辱
2. 视图 views.py
		request
			request.method
			request.GET     --> URL里面的参数
			request.POST    --> post请求的数据
request.path_info        --> 路径
			request.get_full_path()  --> 路径加路径的参数
response
			新手必备3件套
			render(request, "xx.html", {“k”: "v", ...})
			HttpResponse("响应")
			redirect("/index/")
			redirect("http://www.luffycity.com")
from django.http import JsonResponse
			JsonResponse()
FBV和CBV
函数装饰器和方法装饰器的区别
3. 模板
filter
			内置的filter方法
			自定义的filter方法
tag
			内置的tag
			自定义的simpleTag
			自定义的inclusionTag
母版和继承
{% extends ‘base.html’ %}
{% block page-main %}
			{% block small %}
			{% endblock small %}
		{% endblock page-main %}
组件 {% include nav %}
静态文件相关的tag
在模板语言里面反向解析url
{% url 'url的别名' xx %}
4. ORM
对应关系
			类   --> 数据表
			对象 --> 数据行
			属性 --> 字段
Django连接MySQL数据库的步骤:
			1. 手动创建库
			2. 配置settings.py中数据库的连接信息
			3. 修改settings.py同目录下的__init__.py文件,添加两句
				import pymysql
				pymysql.install_as_MySQLdb()
			4. 在app下面的models.py中定义类,类一定要继承mdoels.Model
			5. 执行两句命令
				1. python manage.py makemigrations
				2. python manage.py migrate
操作数据表
操作数据行(增删改查)
			单表
			外键
			多对多
			一对一
ORM高级:
			常用字段和方法
			必知必会13条
			神奇的双下划线
			跨表的正向查询反向查询
F和Q
聚合和分组
事务
执行原生的SQL语句
5. Cookie和Session,分页
6. AJAX
$.ajax({
			url: “”,
			type: "post",
			data: {"k1": JSON.stringify([1,2,3])},
			success:function(data){
}
		})
	7. form表单
8. 中间件
中间件详解,Django复习的更多相关文章
- Django 2.0 学习(20):Django 中间件详解
		
Django 中间件详解 Django中间件 在Django中,中间件(middleware)其实就是一个类,在请求到来和结束后,Django会根据自己的规则在合适的时机执行中间件中相应的方法. 1. ...
 - Django中间件详解
		
Django中间件详解 中间件位置 WSGI 主要负责的就是负责和浏览器和应用之家沟通的桥梁 浏览器发送过来一个http请求,WSGI负责解包,并封装成能够给APP使用的environ,当app数据返 ...
 - net core 中间件详解及项目实战
		
net core 中间件详解及项目实战 前言 在上篇文章主要介绍了DotNetCore项目状况,本篇文章是我们在开发自己的项目中实际使用的,比较贴合实际应用,算是对中间件的一个深入使用了,不是简单的H ...
 - 这个贴子的内容值得好好学习--实例详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化
		
感觉要DJANGO用得好,ORM必须要学好,不管理是内置的,还是第三方的ORM. 最最后还是要到SQL.....:( 这一关,慢慢练啦.. 实例详解Django的 select_related 和 p ...
 - 详解Django rest_framework实现RESTful API
		
这篇文章主要介绍了详解Django rest_framework实现RESTful API,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 一.什么是REST 面向资源是R ...
 - 转载 :实例详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(一)
		
在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能.本文通过一个简单的例子详解这两个函数的作用.虽然Q ...
 - 详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化
		
在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能.本文通过一个简单的例子详解这两个函数的作用. 1. ...
 - 实例详解Django的 select_related
		
在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能.本文通过一个简单的例子详解这两个函数的作用.虽然Q ...
 - 详解Django的CSRF认证
		
1.csrf原理 csrf要求发送post,put或delete请求的时候,是先以get方式发送请求,服务端响应时会分配一个随机字符串给客户端,客户端第二次发送post,put或delete请求时携带 ...
 
随机推荐
- 读高性能MySql笔记
			
1.1 MySQL逻辑架构 MySql服务器逻辑架构图 1.连接管理与安全性 每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU核心或者 ...
 - 迁移svn项目到git
			
women用的gitlab 在gitlab新建项目,然后拉项目拉下来,然后你把项目(vue)全部选中,除开node_modeles .svn dist .idea这些不选外,copy到这个拉下来 ...
 - 从零开始一起学习SLAM | 掌握g2o边的代码套路
			
点"计算机视觉life"关注,置顶更快接收消息! 小白:师兄,g2o框架<从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码>,以及顶点<从零开始 ...
 - 五、latex文档的篇章结构
 - Go 初体验 - 闭包,数组,切片,锁
			
我们先假设一个需求,创建一个数组,里面存放 0 - 99 的整数. 上代码: 输出: 然而并不是我们想要的结果,很多重复数值. 释义: 12行这个闭包函数对 i 的传递并非深拷贝,而是传递了变量指针, ...
 - 个人作业4-Alpha阶段个人总结
			
一.个人总结 在alpha 结束之后, 每位同学写一篇个人博客, 总结自己的alpha 过程: 请用自我评价表:http://www.cnblogs.com/xinz/p/3852177.html 有 ...
 - Unityd外发光Shader Lab
			
Shader "Faye/OutLightting" { Properties { _MainTex("Texture (RGB)", 2D) = " ...
 - ubuntu安装postgresql以及pgadmin4当前最新(4.3)网页版
			
pgAdmin4安装 1.安装安装包 sudo apt-get install build-essential libssl-dev libffi-dev libgmp3-dev virtualenv ...
 - SpringBoot缓存之redis--最简单的使用方式
			
第一步:配置redis 这里使用的是yml类型的配置文件 mybatis: mapper-locations: classpath:mapping/*.xml spring: datasource: ...
 - 异步 async & await
			
1 什么是异步 异步的另外一种含义是计算机多线程的异步处理.与同步处理相对,异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程. 2 异步场景 l 不 ...