博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django之Auth模块 实现登录,退出,自带session 与认证功能的一个重要的模块
阅读量:5138 次
发布时间:2019-06-13

本文共 4368 字,大约阅读时间需要 14 分钟。

Auth模板

1. 什么是Auth模块,有什么用?

django的auth的模块的使用: auth 是集合注册,登录,注销,session 多个功能集合在一起的模块

2. 使用Auth组件的默认auth_user表常用操作

from django.contrib.auth.models import User# 1、创建普通用户User.objects.create_user(username='Owen', password='123')# 2、创建超级用户User.objects.create_superuser(username='root', password='root', email='root@root.com')# 3、获取第一个用户user = User.objects.first()# 4、修改密码user.set_password('000')user.save()# 5、校验密码res = user.check_password('000')
Auth组件默认auth_user表常用操作

3. auth 组件的常用功能:

# 1、校验用户账号及密码,校验成功返回user对象from django.contrib.auth import authenticateuser = authenticate(username=usr, password=pwd)# 2、注册用户到request对象中,注册成功可以request.user访问当前登录用户(会形成session记录)from django.contrib.auth import loginlogin(request, user)  # 注册authenticate成功(当前登录)的用户# 3、注销当前注册的user (用户注销)from django.contrib.auth import logoutlogout(request)
Auth组件常用功能
例题: 检验第一个用户的密码user = User.objects.first()res = user.check_password('000')# 检验的结果是布尔值, True 或者是False2. django 的检验用户的账号与密码是否正确的模块:from django.contrib.auth import authenticateuser = authenticate(username=usr, password=pwd)#校验用户账号及密码,校验成功返回user对象3. django 的检验用户成功后的登录模块, 登录之后直接添加session的功能from django.contrib.auth import loginlogin(request, user)  # 注册authenticate成功(当前登录)的用户#注册用户到request对象中,注册成功可以request.user访问当前登录用户(会形成session记录)4. django 模块中的注销用户,用户注销 用户可以直接退出了,session会消失from django.contrib.auth import logoutlogout(request)5. django 模块的检验用户是否登录的方法# 视图函数中使用if request.user.is_authenticated(): pass# 模板语言中使用{% if request.user.is_authenticated %}{
% else %}{
% endif %}

4. auth模块之检验用户是否登录,可以做装饰器用

from django.contrib.auth.decorators import login_required@login_required(login_url='/user_login/')def user_home(request):    return render(request, 'user.html', locals())
# 注意他返回的是/user_login/?next=/user_order/ 所以前面拿到的是'next'的key  就可以拿到返回值/user_order/

5. auth模块之给user_auth表添加额外的字段

6. 当发现auth模块的User表的信息太少,想自己添加信息的话:# 在models.py 内from django.contrib.auth.models import AbstractUserclass User(AbstractUser):    # 增加自定义字段    info = models.TextField(null=True)    phone = models.TextField(null=True)# settings.py配置AUTH_USER_MODEL = 'app.User'# 下次在调用User表的话 就使用 from app.models import User

 

6. 通过auth组件实现前端实现用户登录跳出不同的页面的功能

7. 如何在前端显示 这个是谁的主页信息

{
{ request.user.username }}的个人订单

# request.user 是拿到当前登录的对象,# .username 是拿到当前对象的名字来显示 谁谁谁的的个人订单8. 如何实现用户登录了就显示 个人主页与注销 没登录就显示 登录与注册# 在前端写:

{

% if request.user.is_authenticated %} #判断用户是否登录成功 {
{ request.user.username }}
#如果登录成功显示 用户的名字 | 注销 # 和注销{% else %} 登录 #如果用户没登录, 显示登录 | 注册 # 和注册{% endif %}

如何在前端显示 这个是谁的主页信息

 

 

 

简单的使用Auth组件完成用户的注册登录与判断验证+session的功能简单实现

from django.shortcuts import render, HttpResponse, redirect# from django.contrib.auth.models import Userfrom app.models import Userfrom django.contrib.auth import authenticate, login, logoutfrom django.contrib.auth.decorators import login_requiredfrom django.db.utils import IntegrityErrordef index(request):    return render(request, 'index.html', locals())def user_login(request):    if request.method == "GET":        return render(request, 'login.html')    if request.method == "POST":        # 在请求url中通过next取出回跳的页面路径        back_url = request.GET.get('next', '/')        usr = request.POST.get('usr', None)        pwd = request.POST.get('pwd', None)        # 用前台传入的账户密码作登录校验        user = authenticate(username=usr, password=pwd)  # type: User        if user:            # 在session中记录登录状态 => login(request, user)来记录登录状态            # request.session['usr'] = user.username            # request.session['is_login'] = True            login(request, user)        return redirect(back_url)def user_logout(request):    logout(request)    return redirect('/')def user_register(request):    if request.method == "GET":        return render(request, 'register.html')    if request.method == "POST":        usr = request.POST.get('usr', None)        pwd = request.POST.get('pwd', None)        try:            User.objects.create_user(username=usr, password=pwd)        except IntegrityError as e:            print('注册失败:%s' % e)        return redirect('/')# 装饰器的页面返回key是next:/user_login/?next=/user_order/@login_required(login_url='/user_login/')def user_order(request):    return render(request, 'order.html', locals())@login_required(login_url='/user_login/')def user_home(request):    return render(request, 'user.html', locals())
课件案例简单实现

 

转载于:https://www.cnblogs.com/gukai/p/10775333.html

你可能感兴趣的文章
(tmp >> 8) & 0xff;
查看>>
linux命令之ifconfig详细解释
查看>>
NAT地址转换
查看>>
Nhibernate 过长的字符串报错 dehydration property
查看>>
Deque - leetcode 【双端队列】
查看>>
gulp插件gulp-ruby-sass和livereload插件
查看>>
免费的大数据学习资料,这一份就足够
查看>>
clientWidth、clientHeight、offsetWidth、offsetHeight以及scrollWidth、scrollHeight
查看>>
企业级应用与互联网应用的区别
查看>>
itext jsp页面打印
查看>>
Perl正则表达式匹配
查看>>
DB Change
查看>>
nginx --rhel6.5
查看>>
Eclipse Python插件 PyDev
查看>>
selenium+python3模拟键盘实现粘贴、复制
查看>>
网站搭建(一)
查看>>
Spring JDBCTemplate
查看>>
Radon变换——MATLAB
查看>>
Iroha and a Grid AtCoder - 1974(思维水题)
查看>>
gzip
查看>>