中間件設置:about_middlewareday70\mymiddleware\s1.pydjango
from django.conf import settings class CheckLogin(MiddlewareMixin): def process_request(self, request): # 判斷當前訪問的URL是否是在白名單中 white_urls = settings.WHITE_URLS if hasattr(settings, 'WHITE_URLS') else [] if request.path_info in white_urls: return None # 從請求的Session數據中取user user_id = request.session.get('user', None) if not user_id: # 沒有登陸跳轉到登陸頁面 return redirect('/login/') else: user_obj = UserInfo.objects.get(id=user_id) request.user = user_obj
註冊中間件session
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', 'mymiddleware.s1.CheckLogin', #自定義中間件 ] # 定義中間件中放行的白名單 WHITE_URLS = ['/login/', ]