9.25中间件和Django的学过的知识总结
2018-9-25 12:10:54
参考连接:http://www.cnblogs.com/liwenzhou/p/8761803.html
浏览器访问Django的过程
面试时容易问到 Django进阶东西

importlib 模块




中间件的执行流程


cookie 和 session设置 参考连接:http://www.cnblogs.com/liwenzhou/p/8343243.html
一个自定义的中间件: my_middleware.py
# /usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/9/25 14:32
# @Author : TrueNewBee
"""
自定义中间件
"""
from django.shortcuts import HttpResponse
from django.utils.deprecation import MiddlewareMixin URL = ["/oo/", "/xx/", "/haha/"] class MD1(MiddlewareMixin): def process_request(self, request):
print("这是我的第一个中间件:MD1")
print(request.path_info)
# 如果用户访问的URL 在白名单里面
if request.path_info in URL:
return
# 否则 直接返回一个 响应 不走视图部分
else:
return HttpResponse("gun!") def process_response(self, response):
print("MD1中的process_response")
return response def process_view(self, request, view_func, view_args, view_kwargs):
print("MD1中的process_view") def process_exception(self, request, exception):
print("MD1里面的: process_exception")
return HttpResponse("你的sb被我捕获的") class MD2(MiddlewareMixin): def process_request(self, request):
print("这是我的第二个中间件:MD2")

Django内容复习了一下 有空吧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’ %} # 写在子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. 中间件
9.25中间件和Django的学过的知识总结的更多相关文章
- 中间件和Django缓存
中间件定义: 中间件是一个.一个的管道,如果相对任何所有的通过Django的请求进行管理都需要自定义中间件 中间件可以对进来的请求和出去的请求进行控制 中间件是一类. 看下面的代码在settings里 ...
- Django框架10 /sweetalert插件、django事务和锁、中间件、django请求生命周期
Django框架10 /sweetalert插件.django事务和锁.中间件.django请求生命周期 目录 Django框架10 /sweetalert插件.django事务和锁.中间件.djan ...
- 【RL-TCPnet网络教程】第25章 DHCP动态主机配置协议基础知识
第25章 DHCP动态主机配置协议基础知识 本章节为大家讲解DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通过前面章节对TCP和UDP ...
- 编码(1)学点编码知识又不会死:Unicode的流言终结者和编码大揭秘
学点编码知识又不会死:Unicode的流言终结者和编码大揭秘 http://www.freebuf.com/articles/web/25623.html 如果你是一个生活在2003年的程序员,却不了 ...
- Java多线程 编写三各类Ticket、SaleWindow、TicketSaleCenter分别代表票信息、售票窗口、售票中心。 售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。
package com.swift; import java.util.ArrayList; import java.util.HashMap; import java.util.List; impo ...
- 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射
使用Code First建模自引用关系笔记 原文链接 一.Has方法: A.HasRequired(a => a.B); HasOptional:前者包含后者一个实例或者为null HasR ...
- Django边学边记——中间件
特点 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,用于全局修改Django的输入或输出. 每个中间件组件负责做一些特定的功能.中间件全部注册在sett ...
- 从Runoob的Django教程学到的
Windows 10家庭中文版,Python 3.6.4,Django 2.0.3 这个月开始学习Django,从网上找到了RUNOOB.COM网站找到了一份Django教程,在“认真”学习之后,初步 ...
- Django 路飞学成书写规范的总结
路飞学成书写规范的总结 命名 项目/文件/函数 -> 小写+下划线 类 驼峰式 路由 将每个功能的路由进行分割, 或者做上注释 类和方法的注释 每个类都要注释是干什么的 每个方法也要进行注释标明 ...
随机推荐
- [转载]震惊!QWidget竟然可以嵌入到QML中,QMl窗口句柄竟然是这样获取
背景 记得在初学qml时,就被大佬告知Qml的实现有两种方式“view+item”和“engine+widow”,那么能不能将QWidget嵌入到QML中来呢,我收到的答案是不可以,原因是QML的 ...
- 开源的.NET系统推荐
C# 源码 AForge.NET RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的 ...
- Android系统资源图标android.R.drawable
Android™ 2.1 android.R.drawable Icon Resources Android™ 1.5 android.R.drawable Icon Resources Androi ...
- HDU_3746 Cyclic Nacklace(KMP)
题目请点我 题解: 题目大意:有一个字符串s.能够在前后加入字符,使字符串成为一个循环次数至少为2的循环字符串.输出最少须要加入的字符数目. 首先能够证明题目能够等价为仅仅在末尾加入字符使满足题意.要 ...
- [svc]sort-uniq
uniq - report or omit repeated lines sort -r -t uniq -r -c uniq的作用: 去除相邻重复行 [root@n1 data]# cat ip.t ...
- spring boot user authorities类图
- Android开发(十三)——全屏滚动与listview
Android全屏滚动使用scrollview,其中有需要采用listview进输出的内容,scrollview与listview冲突. 开始的思维是使用一个Scrollview加上一个ListVie ...
- 带cookie跨域问题的思路以及echo的解决方案
问题起因 前后端分离,前端要访问后端资源,而且需要携带cookie信息,这时碰到了跨域问题.一开始以为设置为允许跨域allow_origins为即可.可是浏览器还是拦截的请求,于是查看跨域规则,原来跨 ...
- oracle删除数据库中的所有表
连接:http://linben.blog.51cto.com/6205951/1293619 1.先禁用数据库中所有的约束 select 'alter table ' || table_name | ...
- AI金融知识自学偏量化方向-目录0
前提: 统计学习(统计分析)和机器学习之间的区别 金融公司采用机器学习技术及招募相关人才 了解不同类型的机器学习 有监督学习 vs 无监督学习 迭代和评估 偏差方差权衡 结合有监督学习和无监督学习(半 ...