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