Django Auth认证模块
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=‘‘) #创建超级用户
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