user=authenticate(username='xxx',password='xxxx') #需要提供两个参数,username,password关键字参数
如果auth_user表中存在这个用户,会返回一个user对象,如果用户不存在,返回None
login(request,user)主要完成以下:把用户的id放入session表中的数据里
1,注入session信息:request.session['user_id']=user.pk
from django.contrib.auth import authenticate, login
def my_view(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
# Redirect to a success page.
...
else:
# Return an 'invalid login' error message.
from django.contrib.auth import logout
def logout_view(request):
logout(request) #注销只是session表里的登录记录,并不是注销的auth_user表的记录
# Redirect to a success page.
只要登录过的用户,访问任何视图的时候都可以使用request.user对象,这就是一个user对象,request.user.name就可以拿到用户的名字,request.user.email就可以得到用户的邮箱,还可以拿到用户的其他信息。除此之外,user对象还拥有以下方法:
如果session表里有你的登录记录,那返回值为True,可以用来验证用户是否登录过。
1.1 我们可以自己在每个需要判断的是否登陆过才能访问的视图里面手动写上判断,而且登陆后直接返回最开始请求的页面。
def my_view(request):
if not request.user.is_authenticated():
return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
1.2 Django自己给我们封装一个装饰器,用来判断用户是否登录过,就和我们用session写的装饰器一样的,只是现在也是登录成功后返回最开始的页面。
from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
from django.contrib.auth.models import User
User.objects.create_user(username='',password='')
User.objects.create_superuser(username="alex",password="123")
用户需要修改密码之前,首先得让他输入原来的密码,如果输入正确返回True,否则返回None,当返回True时,才允许修改密码
user = User.objects.get(username='')
user.set_password(password='')
user.save
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有