django 裝飾器 檢測登錄狀態(tài)操作
1、檢測登錄狀態(tài)
base.py
def checkLogin(func): """ 查看session值用來判斷用戶是否已經登錄 :param func: :return: """ def warpper(request,*args,**kwargs): if request.session.get('username', False): return func(request, *args, **kwargs) else: return HttpResponse('/login') return warpper
index.py:
from proApp import models, article, base @base.checkLogin def index(request): dict = { "article_list": article.getArticle(), } return render(request, 'index.html',dict)
1報錯:
The view proApp.base.warpper didn't return an HttpResponse object. It returned None instead.
解決辦法: 判斷用戶session后,一定要return返回值
2、登錄檢查成功,路由未被更改,頁面未跳轉
解決辦法: redirect(‘跳轉路徑和名稱‘)方法,頁面跳轉
from django.shortcuts import render,render_to_response,redirect def checkLogin(func): """ 查看session值用來判斷用戶是否已經登錄 :param func: :return: """ def warpper(request,*args,**kwargs): if request.session.get('username', False): return func(request, *args, **kwargs) else: return redirect('/login') return warpper
注意:render與redirect兩點區(qū)別:
1、render返回一個登陸成功后的頁面,刷新該頁面將回復到跳轉前頁面。而redirect則不會
2、render返回一個登陸成功頁面,不會經過url路由分發(fā)系統(tǒng),也就是說,不會執(zhí)行跳轉后url的試圖函數。這樣,返回的頁面渲染不成功;而redirect是跳轉到指定頁面,當登陸成功后,會在url路由系統(tǒng)進行匹配,如果有存在的映射函數,就會執(zhí)行對應的映射函數。
補充知識:Django中的中間件與類視圖
類視圖
函數視圖:以函數的方式定義的視圖稱為函數視圖
類視圖:以類的方式定義的視圖稱為類視圖
代碼可讀性好
類視圖相對于函數視圖有更高的復用性
因此大部分視圖都使用類進行封裝。
from django.views import View class ClassView(View): """類視圖的介紹""" def get(self, request): """get請求方法""" print('get請求方法進次函數') return HttpResponse('get請求方法') def post(self, request): """post請求方法進此函數""" print('post請求方法') return HttpResponse('post請求方法') """ 在url中配置 """ urlpatterns = [ url(r"^classview/$", views.ClassView.as_view()) #ClassView是一個類 需要調用Django自帶的as_view方法轉換為view ]
中間件
中間件
Django中的中間件是一個輕量級、底層的插件系統(tǒng),可以介入Django的請求和響應處理過程,修改Django的輸入或輸出。中間件的設計為開發(fā)者提供了一種無侵入式的開發(fā)方式,增強了Django框架的健壯性。
我們可以使用中間件,在Django處理視圖的不同階段對輸入或輸出進行干預。
#先在子應用文件下新建(自定義).py文件 # 自定義中間鍵 def outer(fuc): print('調用前') def inner(*args, **kwargs): print('執(zhí)行前') data = fuc(*args, **kwargs) print(' 執(zhí)行后') return data return inner #2. settings.py的middleware下面加入自定義的中間件 'user1.middlewares.outer' # 自定義中間件
以上這篇django 裝飾器 檢測登錄狀態(tài)操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
用Python登錄Gmail并發(fā)送Gmail郵件的教程
這篇文章主要介紹了用Python登錄Gmail并發(fā)送Gmail郵件的教程,利用了Python的SMTP庫,代碼非常簡單,需要的朋友可以參考下2015-04-04