码迷,mamicode.com
首页 > 其他好文 > 详细

Django Auth认证模块

时间:2020-01-14 23:59:20      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:user   play   print   用户   superuser   name   nbsp   import   span   

Author模块介绍

Django作为一个完美主义者的终极框架,它内置了强大的用户认证系统--auth,执行数据库迁移的那两条命令时,即使我们没有建表,它默认帮我们创建auth_user 表来存储用户数据。

创建超级用户,我们可以在pycharm中使用导航栏中的Tools里的run manage.py Task 中输入createsuperuser

技术图片

注册相关:

create_user()

auth 提供的一个创建新用户的方法,需要提供必要参数(username、password)等。

用法:

from django.contrib.auth.models import User
user = User.objects.create_user(username=用户名,password=密码,...)

create_superuser()

auth 提供的一个创建新的超级用户的方法,需要提供必要参数(username、password、email)等。

用法:

from django.contrib.auth.models import User
user = User.objects.create_superuser(username=用户名,password=密码,email=邮箱,...)

示例:

技术图片
from django.contrib import auth
from django.contrib.auth.models import User
def register(request):
    if request.method ==POST:
        username = request.POST.get(username)
        password = request.POST.get(password)
        # User.objects.create(username=username,password=password) # 这种方式不能使用,因为密码是明文的
        # User.objects.create_user(username=username,password=password) #创建普通用户
        User.objects.create_superuser(username=username,password=password,email=123@qq.com) #创建超级用户
    return render(request,register.html)
views.py

登录相关

authenticate()

提供了用户认证功能,即验证用户名以及密码是否正确,一般需要username 、password两个关键字参数

登录成功返回的是用户对象,错误返回None。

user = auth.authenticate(request,username=username,password=password)

login()

保存用户登录状态,会自动在后端为该用户生成相关session数据

#若用户登录成功,拿到user对象        
if user:
    #保存用户登录状态
    auth.login(request,user)
    ‘‘‘
    只要执行了这一句话,之后在任意可以获取到request对象的地方
    都可以通过request.user获取到当前登录的用户对象
    ‘‘‘

is_authenticated()

用来判断当前请求是否通过了认证,返回布尔值

request.user.is_authenticated()

校验用户是否登录装饰器 @login_required

方式一:

@login_required(login_url=/login)  #加参数 若未登录就跳转到指定的登录页面
def xxx(request):
    return HttpResponse(xxx页面)   

方式二:

views.py

@login_required
def xxx(request):
    return HttpResponse(xxx页面)

在settings.py中加入以下代码

LOGIN_URL = /login/

注意:若两种方法都有,则先执行方式一的

登录综合示例:

技术图片
def login(request):
    if request.method ==POST:
        username = request.POST.get(username)
        password = request.POST.get(password)
        user = auth.authenticate(request,username=username,password=password)  #返回值user是一个对象
        # print(user)
        # print(user.username)
        # print(user.password)
        ‘‘‘
        用户名密码正确返回的是用户对象
        错误返回None
        ‘‘‘
        if user:
            #保存用户登录状态
            auth.login(request,user)
            ‘‘‘
            只要执行了这一句话,之后在任意可以获取到request对象的地方
            都可以通过request.user获取到当前登录的用户对象
            ‘‘‘
            return HttpResponse(登录成功)
    return render(request,login.html)

def get_user(request):
    print(request.user)
    ‘‘‘
    用户登录成功之后,request.user拿到的就是用户对象 user
    没有登录,获取到的是匿名用户 AnonymousUser
    ‘‘‘
    print(request.user.is_authenticated())  #返回的是布尔值,确认用户是否登录
    return HttpResponse(get_user)


# 校验用户是否登录装饰器
from django.contrib.auth.decorators import login_required

@login_required(login_url=/login)  #加参数 跳转到指定的登录页面
# @login_required
def xxx(request):
    return HttpResponse(xxx页面)
views.pys

Django Auth认证模块

标签:user   play   print   用户   superuser   name   nbsp   import   span   

原文地址:https://www.cnblogs.com/baohanblog/p/12194235.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!