在django中應用裝飾器(一)


在新寫的博客應用中,涉及很多關於權限的問題,比如修改用戶信息,博客的修改與刪除,雖然默認的提交信息都是session的用戶,但是也應該防止一下篡改提交的可能,之前想的是在每個view中加一段判斷的邏輯,判斷請求的request.user和提交數據中的用戶是否是同一個用戶,也算是比較初級的一個判定把,后來想想如果后面涉及的接口越來越多,重復的代碼就會很多,查了很多資料,感覺這個功能可以用裝飾器來實現,

def inter_permission(func):
    def wrapper(*args, **kwargs):
        for arg in args:
            request = arg
        for kwarg in kwargs:
            username = kwargs[kwarg]
        if request.method == 'GET':
            if str(request.user) == username:
                return func(*args, **kwargs)
            else:
                return redirect('/')
        if request.method == 'POST':
            if str(request.user) == request.POST['permission_name']:
                return func(*args, **kwargs)
            else:
                return HttpResponse('permission denied')
    return wrapper

關於裝飾器的內容,我這里就不敘述了,網上一搜一大把,主要是在這里記錄一下我的個人想法,

1.對於裝飾的方法或者類的參數數量問題,*args, **kwargs即可滿足所有參數類型,這里還有一個小插曲就是url.py中的參數是屬於dict類型,否則的話只用*args就可以滿足普通的參數

2.對這個裝飾器我只是進行一個初步的構造,處理邏輯大致分為GET和POST,普通的GET可以通過url中獲取參數,POST則是從post內容中獲取,所以在這里區分了一下

3.后續會對權限管控這里統一一下接口,還沒有實現,后續會對接口統一,然后對裝飾器也會對應的優化一下邏輯,現在應該還存在很大問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM