一、类视图
1.常用的四种请求方式
view
class ClassView(View):
def get(self, request):
return http.HttpResponse("get")
def post(self, request):
return http.HttpResponse("post")
def delete(self, request):
return http.HttpResponse("delete")
def put(self, request):
return http.HttpResponse("put")
url
# 要加上as_view()
url(r'^classview/$', views.ClassView.as_view()),
2.装饰器的使用
在路由中装饰
def my_decorator(func):
def wrapper(request, *args, **kwargs):
print("装饰器被调用")
print("请求路径%s" % request.path)
return func(request, *args, **kwargs)
return wrapper
class UrlDecorate(View):
def get(self, request):
return http.HttpResponse("OK")
url(r'^urldecorate/$', views.my_decorator(views.UrlDecorate.as_view())),
在视图中装饰
装饰所有方式
@method_decorator(my_decorator, name='dispatch')
class ViewDecorate(View):
def get(self, request):
return http.HttpResponse("OK")
def post(self, request):
return http.HttpResponse("OK")
装饰单个方式
@method_decorator(my_decorator, name='get')
class ViewDecorate(View):
def get(self, request):
return http.HttpResponse("OK")
def post(self, request):
return http.HttpResponse("OK")
装饰多个方式
class ViewDecorate(View):
@method_decorator(my_decorator)
def get(self, request):
return http.HttpResponse("OK")
@method_decorator(my_decorator)
def post(self, request):
return http.HttpResponse("OK")
def put(self, request):
return http.HttpResponse("OK")
3.Mixin扩展类
class DecoratorMixin(View):
@method_decorator(my_decorator)
def dispatch(self, request, *args, **kwargs):
view = super().dispatch(request, *args, **kwargs)
return view
class MiXin(DecoratorMixin, View):
def get(self, request):
return http.HttpResponse("ok")
def post(self, request):
return http.HttpResponse("ok")
二、中间键
1.在子工程创建一个middleware.py
def my_middleware(get_response):
print("初始化 my_middleware")
def middleware(request):
print("request前")
response = get_response(request)
print("请求路径%s" % request.path)
print("response后")
return response
return middleware
2.settings中的中间键添加
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'basics.middleware.my_middleware' # 添加的自定义的中间键
]