标签:exception 一个 情况下 属性 斜杠 跨域 准则 存在 click
Django中间件(Middleware)
对Django自带的中间件进行详细解释: django.middleware.security.SecurityMiddleware:
一些安全设置,比如XSS脚本过滤。 django.contrib.sessions.middleware.SessionMiddleware:session
支持中间件,加入这个中间件,会在数据库中生成一个django_session的表。 django.middleware.common.CommonMiddleware:
通用中间件,会处理一些URL,比如baidu.com会自动的处理成www.baidu.com。比如/blog/111会处理成/blog/111/自动加上反斜杠。 django.middleware.csrf.CsrfViewMiddleware:
跨域请求伪造中间件。加入这个中间件,在提交表单的时候会必须加入csrf_token,cookie中也会生成一个名叫csrftoken的值,也会在header中加入一个HTTP_X_CSRFTOKEN的值来放置CSRF攻击。 django.contrib.auth.middleware.AuthenticationMiddleware:
用户授权中间件。他会在每个HttpRequest对象到达view之前添加当前登录用户的user属性,也就是你可以在view中通过request访问user。 django.contrib.messages.middleware.MessageMiddleware:
消息中间件。展示一些后台信息给前端页面。如果需要用到消息,还需要在INSTALLED_APPS中添加django.contrib.message才能有效。如果不需要,可以把这两个都删除。 django.middleware.clickjacking.XFrameOptionsMiddleware:
防止通过浏览器页面跨Frame出现clickjacking(欺骗点击)攻击出现。 中间件的执行顺序 在调用视图前,settings中配置的MIDDLEWARE数组顺序执行 在调用视图后,中间件会按相反的顺序
自定义中间件格式
名字必须是 XxxxMiddleware
在settings配置路径MIDDLEWARE=[]
class TestMiddleware(object): ‘‘‘ 自定义中间件 ‘‘‘ def __init__(self, get_response): self.get_response = get_response # 是View的function def __call__(self, request): # 请求之前的处理代码 response = self.get_response(request) # 执行View请求 # 请求之后的处理代码 return response # 需要返回response对象
另一种写法:
class Test1Middleware(MiddlewareMixin): # 继承Middleware相当于上面的标准写法 ‘‘‘ 自定义中间件 ‘‘‘
pass
def process_veiw(self, request, view_func, view_args, view_kwargs): """ @request, 当前请求对象 @view_func, 就是我们需要执行的view_func方法, @view_args, 就是我们的view_func所带的位置参数 @view_kwargs, 就是我们的view_func所带的键值参数 """ print u‘process_veiw方法,在执行View之前执行‘ # 这个方法如果返回的是一个response, 它就提前结束请求 response = view_func(request, *view_args, **view_kwargs) return request
def process_exception(self, request, exception): # 这个异常必须是在执行view get中出现的异常,它才能进入 # 这里的异常是指代码出现错误,403,500错误不代表代码出现异常 print u"---- exception ----"
中间件开发准则
标签:exception 一个 情况下 属性 斜杠 跨域 准则 存在 click
原文地址:https://www.cnblogs.com/tangpg/p/9041542.html