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')
