Django自带的用户登录 | Django
Posted pymkl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django自带的用户登录 | Django相关的知识,希望对你有一定的参考价值。
1.用户认证
authenticate()方法;
from django.contrib.auth import authenticate def login(request): if request.method == "POST": username = request.POST.get("username") password = request.POST.get("password") user = authenticate(username=username,password=password) if user: print(‘authenticate successed‘)
2.用户登录
login()方法;
from django.contrib.auth import authenticate,login def user_login(request): if request.method == "POST": username = request.POST.get("username") password = request.POST.get("password") user = authenticate(username=username,password=password) if user: # 登录 login(request,user) print(‘authenticate successed‘)
3.限制用户登录后才能访问页面
login_required装饰器;
from django.contrib.auth.decorators import login_required # 在具体的每个页面添加 @login_required def dashboard(request): return render(request, ‘crm/dashboard.html‘)问题:未登录用户直接访问被限制的页面,报错:http://localhost:8000/accounts/login/?next=/ 这个url找不到
解决:当未登录用户直接访问被限制的页面时,直接跳转至login页面;
在settings.py文件中添加配置:LOGIN_URL = ‘/login/‘
此时再次访问就会跳转至login页面;
4.登录成功后跳转至上次访问的页面
默认登录成功后跳转至"http://localhost:8000/login/?next=/" 中next参数指定的位置;
from django.shortcut import render,redirect from django.contrib.auth import authenticate,login def user_login(request): if request.method == "POST": username = request.POST.get("username") password = request.POST.get("password") user = authenticate(username=username,password=password) if user: # 登录 login(request,user) print(‘authenticate successed‘) # 验证成功时,user返回python,不成功返回None; return redirect(request.GET.get(‘next‘,‘/‘)) # 跳转至上次访问页面,如果没有next参数,就直接跳转首页
附1:在注册时,通常我们会使用django自带的user表,并且对其字段进行扩展,方式就是进行一对一的关联;
class UserInfo(models.Model): user = models.OneToOneField(User, blank=True, null=True)这里需要注意的是,不是所有注册用户都可以登录admin后台,所以只需要在注册时,对默认的auth_user表中的is_superuser字段进行更改(0/1);
另外,is_active字段表示当前用户是否已经激活;
附2:如果当前页面只能拥有is_superuser权限,就可以添加判断条件:if request.is_superuser:
以上是关于Django自带的用户登录 | Django的主要内容,如果未能解决你的问题,请参考以下文章