Django 登录验证-自动重定向到登录页

Web项目有些场景需要做用户登录验证,以便访问不同页面。

方法一:login_required装饰器

适用于函数视图。

from django.contrib.auth.decorators import login_required

"""
登录验证:
  如果验证未登录,用户自动重定向到登录页面login_url='/login/';
  如果验证成功,用户应当自动跳返到原来的路径,这个原来的路径默认存储在"next"查询参数中。
  redirect_field_name默认即为"next"。
"""

@login_required(redirect_field_name='next', login_url='/login/')    # 当前视图所对应的请求path会自动放入"next"查询参数中
def my_view(request):
  ...

方法二:LoginRequiredMixin混入

适用于类视图。

from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic.base import View

"""
登录验证:
  如果验证未登录,用户自动重定向到登录页面login_url='/login/';
  如果验证成功,用户应当自动跳返到原来的路径,这个原来的路径默认存储在"next"查询参数中。
  redirect_field_name默认即为"next"。
"""

# 这个Mixin应该位于继承列表中最左边的位置。 
class MyView(LoginRequiredMixin, View):
    # 重载属性。redirect_field_name默认即为"next",当前视图所对应的请求path会自动放入"next"查询参数中
    login_url = '/login/'
    redirect_field_name = 'next'
    ...

关于Mixin类

Mixin:在设计类的继承关系时,通常,主线都是单一继承下来的,如果需要"组合"额外的功能,通过多重继承就可以实现,这种设计通常称之为Mixin(混合)。
Mixin类一般以Mixin为后缀,使用Mixin类实现多重继承需要注意:
1)首先,它必须表示某一种辅助功能,而不是某个事物;
2)其次,它必须功能单一,如果有多个功能,那就写多个Mixin类;
3)再者,它不依赖于子类的实现;
4)最后,子类即便没有继承这个Mixin类,也照样可以工作,就是缺少了某个功能(比如飞机照样可以载客,就是不能飞了^_^)。

  至此。转载请注明出处。

本站相关链接:>>Django部署 ]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值