django之类视图,状态保持,中间件
一: 状态保持:
1.cookie:保存在浏览器当中, 键值对的字符串形式; 默认过期时间是关闭浏览器时(max_age设置过期时间).基于域名安全.
写: response.set_cookie(键,值,过期时间)
def show(request):
response = HttpResponse('ok)
response.set_cookie('键','值',max_age='时间/秒')
return response
读: response.COOKIES.get(键)
def cookie_get(request):
name= request.COOKIES.get('键')
return HttpResponse(name)
2.session: 保存在服务器中,可以通过setting.py设置保存位置db,redis, session依赖于cookie,默认过期时间是两周.
写: request.session['键'] = 值
def set_session(request):
request.session['name'] = '值'
return HttpResponse('ok')
读:request.session.get('键') (不存在不报错), 不存在返回none.
def session_get(request):
name= requset.session.get('键')
return HttpResponse('name')
二 :类视图:
语法: 在views.py中定义类,继承自django.views.View, 在类中定义名称是请求方法的小写
注册路由: 类.as_view()
url(r'^$',views.类名.as_view()),
原理: as_view()返回 view函数, 请求时执行view函数,调用对象的dispatch函数,根据请求方式获取对象的方法, 执行方法.
为类视图田家装饰器:
1> @method_decorator('装饰器名称', name=dispatch)
2> 为某个函数加装饰器@装饰器名称
三:中间件:
语法: 与装饰器一样
def fun(f)
def fun1(*args,**kwargs):
return f(*args,**kwargs)
return fun1
注册: session.py项MIDDLEWART : '应用名.middleware.MyMiddleware'
执行顺序: 以视图分界: 视图执行前由上到下; 视图执行后由下到上.