Django登錄跳轉login_required


login_required是對Auth認證模塊的補充,Auth模塊:  https://www.cnblogs.com/weiyiming007/p/12419317.html


1、login_required介紹

判斷用戶是否登錄, 如果用戶沒有登錄, 默認會跳轉到'/accounts/login/', 並且URL會自動加上你請求的url作為登錄后的跳轉地址, 
如:'/accounts/login/?next=/user/address/'登入完后會去請求'/user/address/', 如果登錄了, 會正常執行;


可以在settings.py中設置默認跳轉地址, 如:

LOGIN_URL = '/login.html'


2、login_required使用

1)函數視圖使用

from django.contrib.auth.decorators import login_required
      
@login_required   #添加一個登錄校驗的裝飾器,登錄成功才會走到下面,否則會跳轉到django默認的登錄
def my_view(request):
  ...


2)類視圖使用

方法一:將views.UserOrderViews.as_view()當做參數傳入login_required

from django.contrib.auth.decorators import login_required
from . import views

app_name = 'user'

urlpatterns = [
    url(r'^login/', views.LoginView.as_view(), name='login'),
    url(r'^order/', login_required(views.UserOrderView.as_view())),
]


方法二:    重寫as_view方法, 讓類視圖繼承該父類

utils/mixin.py
from django.contrib.auth.decorators import login_required

class LoginRequiredMixin(object):
    @classmethod
    def as_view(cls, **initkwargs):
        view = super(LoginRequiredMixin, cls).as_view(**initkwargs)
        return login_required(view)


views.py中讓類視圖繼承上面的工具類:

from utils.mixin import LoginRequiredMixin

class IndexView(LoginRequiredMixin,View):
    def get(self, request, *args, **kwargs):
        return render(request, 'index.html')


免責聲明!

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



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