Django檢視之檢視類和中介軟體
1. 檢視類
1.1 建立檢視類
class RegisterView(View):
def get(self,request):
print('當前的請求是get請求')
return HttpResponse('get')
def post(self,request):
return HttpResponse('post')
1.2 路由配置
url(r'register/',RegisterView.as_view()),
1.3 遵循開放封閉原則,新增額外功能
1.3.1 第一種方法
1、在指定的py檔案中建立裝飾器
def wrapper(func):
def inner(request,*args,**kwargs):
pass
return inner
2、在URL地址匹配的過程中,進行額外功能的新增
url(r'showinfo/',wrapper(ShowInfo.as_view()))
1.3.2 第二種方法
from django.utils.decorators import method_decorator
@method_decorator(wrapper,name='dispatch')
class ShowInfo(View):
def get(self,request):
return HttpResponse('使用者已經正常登入')
注意點:
1、name值不能隨便新增
1.3.3 第三種方法
class WapperClass:
@classmethod
def as_view(cls,**kwargs):
view = super().as_view(**kwargs)
view = wrapper(view)
return view
class ShowInfo(WapperClass,View):
def get(self,request):
return HttpResponse('使用者已經正常登入')
注意點:
1、注意順序
2. 中介軟體
2.1 定義
在請求與響應的過程中,修改Django的輸入或者輸出,在處理檢視的各個階段對輸入和輸出進行干預
https://docs.djangoproject.com/en/1.11/topics/http/middleware/ 官方文件
2.2 自定義中介軟體
class Middleware:
def __init__(self, get_response=None):
初始化操作
pass
def process_request(self, request):
# 在每個請求上,request物件產生之後,URL地址匹配之前進行呼叫,返回None或者Httpresponse物件
pass
def process_view(self, request, callback, callback_args, callback_kwargs):
# 在處理檢視之前,在每個請求上,URL地址匹配之後,檢視函式呼叫之前,返回的是None或Httpresponse物件
pass
def process_response(self, request, response):
# 處理響應後,檢視函式呼叫之後,所有的響應在返回瀏覽器之前被呼叫,在每一個請求上呼叫,返回 HTTPresponse物件
pass
def process_exception(self,request,exception):
# 異常處理:當檢視丟擲異常時呼叫,在每一個請求上呼叫,返回的Httpresponse物件
pass
def my_middleware2(get_response):
print('此處做的是初始化操作init 中介軟體2被呼叫')
def middleware(request):
print('在request被呼叫之前 中介軟體2')
response = get_response(request)
print('在response之後呼叫 中介軟體2')
return response
return middleware
2.3 中介軟體順序
相關文章
- [Django REST framework - 檢視元件之檢視基類、檢視擴充套件類、檢視子類、檢視集]DjangoRESTFramework元件套件
- django 的類檢視和函式檢視-雜談Django函式
- Django之檢視層Django
- Django框架之檢視層Django框架
- [Django框架之檢視層]Django框架
- Django的檢視和模板Django
- drf : 通用檢視類和(GenericAPIView)5個檢視擴充套件類,九個檢視子類,檢視集。APIView套件
- Django(27)Django類檢視新增裝飾器Django
- Django基礎之三(類檢視)Django
- Django 檢視層Django
- Django檢視層Django
- ASP.NET Core 5.0 MVC中的檢視分類——佈局檢視、啟動檢視、具體檢視、分部檢視ASP.NETMVC
- django的檢視層Django
- Django - 探究FBV 檢視Django
- Django基礎三之檢視函式Django函式
- Django - 檢視層 - 檢視函式及快捷方式Django函式
- django模板怎麼配置檢視和urlDjango
- 【6】Django檢視函式Django函式
- Flask 類檢視Flask
- Django進階之路由層和檢視層Django路由
- Django搭建個人部落格:基於類的檢視Django
- 集合檢視子類
- Linux檢視已安裝軟體Linux
- win10怎麼檢視軟體版本 win10電腦如何檢視軟體版本Win10
- Flutter學習之檢視體系Flutter
- Dynamics CRM實體系列之檢視
- django rest framework 檢視原始碼解析DjangoRESTFramework原始碼
- Django(58)viewsets檢視集詳解DjangoView
- Django - 檢視層 - 生成CSV檔案Django
- Oracle普通檢視和物化檢視的區別Oracle
- day04-檢視和檢視解析器
- drf檢視類總結
- 圖片影片檢視軟體ApolloOne MacMac
- EdgeView for Mac(影像瀏覽檢視軟體)ViewMac
- EdgeView 3 for Mac 圖片檢視軟體ViewMac
- 【Django drf】檢視類APIView之五層封裝 ApiView的類屬性 drf配置檔案DjangoAPIView封裝
- Django——中介軟體Django
- django中介軟體Django