Django登录使用的技术和组件
登录
'''
获取用户所有的数据
每条数据请求的验证
成功之后获取所有正确的信息
失败则显示错误信息
'''
#登陆页面管理
def login(request):
if request.method == 'GET':
return render(request,'login.html')
elif request.method == 'POST':
obj = FM(request.POST)
sucst = obj.is_valid()
if sucst:
username = obj.cleaned_data['username']
password = obj.cleaned_data['password']
#添加注册方法--往数据库中添加字段
# models.UserInfo.objects.create(**obj.cleaned_data)
dic = models.UserInfo.objects.filter(username=username).first()
# print(dic.username)
if not dic:
return render(request, 'login.html',{'usererrors':'此用户未注册'})
elif dic.password == password:
request.session['username'] = username
request.session['is_login'] = True
return redirect('/index/')
else:
return render(request,'login.html',{'pswerrors':'密码错误'})
else:
# print(obj.errors)
return render(request, 'login.html', {'obj': obj})
登录
session
'''
生产随机字符串
写到用户浏览器
保持在session中
依赖cookie
'''
session本身封装了上述功能
request.session['username'] = username
request.session['is_login'] = True
session设置字段
session封装成装饰器进行用户验证
'''
获取用户登录字段状态
获取用户字段名称赋值username
查找用户所在组
通过组ID获取权限
'''
#这个是做管理员与商务部人员双重验证,管理材料出入库:不是管理员或商务部人员则返回主页
def identity(fun):
def verication(request,*args,**kwargs):
if request.session.get('is_login',None):
username = request.session.get('username')
#print(username)
groupid = models.UserInfo.objects.filter(username=username).first().usergroup_id
#print(groupid)
usergroup = models.UserGroup.objects.filter(id=groupid).first().groupname
#print(usergroup)
if usergroup == '管理员' or usergroup == '商务部':
return fun(request,*args,**kwargs)
else:
return redirect('/index/')
else:
return redirect('/index/')
return verication
session验证
用户退出
'''
清除session状态
'''
def logout(request):
request.session.clear()
return redirect('/login/')
清除session状态
Django登录使用的技术和组件的更多相关文章
- Django学习之九: auth 认证组件
目录 Django auth 认证组件 配置使用auth组件及其中间件 request.user 可以直接在template模版中使用 auth组件常用api 获取认证model类 认证检测装饰器@l ...
- 简单的django登录项目---带views视图函数(脚本文件)---用Bootstrap
简单的django登录项目 1.首先建立工程,建立工程请参照:https://www.cnblogs.com/effortsing/p/10394511.html 2.在Firstdjango工程项目 ...
- Django登录与注销
一:Django中自带着登录,验证功能不用自己再去写登录功能. 1.从相应模块导入组件功能 from django.contrib.auth import authenticate,login 2.从 ...
- django 之知识点总结以及Form组件
一.model常用操作 1.13个API查询:all,filter,get ,values,values_list,distinct,order_by ,reverse , exclude(排除),c ...
- Django - session 会话跟踪技术
1.session简介 |session 英 /'seʃ(ə)n/ 美 /'sɛʃən/ 基于cookies开发,将值存到服务端 写session 读session Session是服务器端技术,利用 ...
- Django - cookies 会话跟踪技术
一.HTTP协议的无状态保存 两次请求之间没有关联 会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应 2.会话路径技术使用Cookie或session完成 我们知道HTTP ...
- 14 Django之Form和Model Form组件
一.什么是Form 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用 ...
- Django登录(含随机生成图片验证码)注册实例
登录,生成随机图片验证码 一.登录 - 随机生成图片验证码 1.随机生成验证码 Python随机生成图片验证码,需要使用PIL模块,安装方式如下: pip3 install pillow 1)创建图片 ...
- Django之 rest_framework (一基本组件)
目录 RESTFUL 序列化 视图三部曲 认证与权限组件 解析器 分页 RESTFUL 一.什么是RESTFUL REST与技术无关代表的是一种软件架构风格,REST是Representational ...
随机推荐
- DolphinScheduler源码分析之EntityTestUtils类
1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license ...
- LA 3641 Leonardo的笔记本 & UVA 11077 排列统计
LA 3641 Leonardo的笔记本 题目 给出26个大写字母的置换B,问是否存在要给置换A,使得 \(A^2 = B\) 分析 将A分解为几个循环,可以观察经过乘积运算得到\(A^2\)后,循环 ...
- Codeforces Round #628 (Div. 2) C. Ehab and Path-etic MEXs(树,思维题)
题意: 给有 n 个点的树的 n-1 条边从 0 到 n-2 编号,使得任意两点路径中未出现的最小数最小的方案. 思路: 先给所有度为 1 的点所在边编号,之后其他点可以随意编排. #include ...
- Scrambled Polygon POJ - 2007 极角排序
题意: 给你n个点,这n个点可以构成一个多边形(但是不是按顺序给你的).原点(0,0)为起点,让你按顺序逆序输出所有点 题解: 就是凸包问题的极角排序 用double一直Wa,改了int就可以了 // ...
- HDU3544 Alice's Game && POJ 2960 S-Nim(SG函数)
题意: 有一块xi*Yi的矩形巧克力,Alice只允许垂直分割巧克力,Bob只允许水平分割巧克力.具体来说,对于Alice,一块巧克力X i * Y i,只能分解成a * Y i和b * Y i其中a ...
- CodeForces - 449B 最短路(迪杰斯特拉+堆优化)判断最短路路径数
题意: 给出n个点m条公路k条铁路. 接下来m行 u v w //u->v 距离w 然后k行 v w //1->v 距离w 如果修建了铁路并不影响两点的最短距离, ...
- 2015ACM/ICPC亚洲区沈阳站-重现赛 D - Pagodas
题意:有\(n\)个数,开始给你两个数\(a\)和\(b\),每次找一个没出现过的数\(i\),要求满足\(i=j+k\)或\(i=j-k\),当某个人没有数可以选的时候判他输,问谁赢. 题解:对于\ ...
- C# 之 async / await
直接看一个例子 private async void button1_Click(object sender, EventArgs e) { var t = Task.Run(() => { T ...
- constexpr 的来龙去脉
constexpr 是什么? 关键字 constexpr (constant expression) 是在 C++11 中引入的,并且在 C++14 中进行了优化. constexpr 和 const ...
- C# 类 (5)
Static 静态成员 创建一个类,实例化它,然后使用实例的各种方法或者属性 然而有时候我们不想实例化这个类,难道我们就没法用他里面的成员了吗?比如计算矩形的面积,就是长*宽,万年不变 当然可以,用s ...