登录

  '''
  获取用户所有的数据
  每条数据请求的验证
  成功之后获取所有正确的信息
  失败则显示错误信息
  '''
#登陆页面管理
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登录使用的技术和组件的更多相关文章

  1. Django学习之九: auth 认证组件

    目录 Django auth 认证组件 配置使用auth组件及其中间件 request.user 可以直接在template模版中使用 auth组件常用api 获取认证model类 认证检测装饰器@l ...

  2. 简单的django登录项目---带views视图函数(脚本文件)---用Bootstrap

    简单的django登录项目 1.首先建立工程,建立工程请参照:https://www.cnblogs.com/effortsing/p/10394511.html 2.在Firstdjango工程项目 ...

  3. Django登录与注销

    一:Django中自带着登录,验证功能不用自己再去写登录功能. 1.从相应模块导入组件功能 from django.contrib.auth import authenticate,login 2.从 ...

  4. django 之知识点总结以及Form组件

    一.model常用操作 1.13个API查询:all,filter,get ,values,values_list,distinct,order_by ,reverse , exclude(排除),c ...

  5. Django - session 会话跟踪技术

    1.session简介 |session 英 /'seʃ(ə)n/ 美 /'sɛʃən/ 基于cookies开发,将值存到服务端 写session 读session Session是服务器端技术,利用 ...

  6. Django - cookies 会话跟踪技术

    一.HTTP协议的无状态保存 两次请求之间没有关联 会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应 2.会话路径技术使用Cookie或session完成 我们知道HTTP ...

  7. 14 Django之Form和Model Form组件

    一.什么是Form 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用 ...

  8. Django登录(含随机生成图片验证码)注册实例

    登录,生成随机图片验证码 一.登录 - 随机生成图片验证码 1.随机生成验证码 Python随机生成图片验证码,需要使用PIL模块,安装方式如下: pip3 install pillow 1)创建图片 ...

  9. Django之 rest_framework (一基本组件)

    目录 RESTFUL 序列化 视图三部曲 认证与权限组件 解析器 分页 RESTFUL 一.什么是RESTFUL REST与技术无关代表的是一种软件架构风格,REST是Representational ...

随机推荐

  1. 使用VisualStudio直接运行简单的C#语句

    场景 经常有这样的需求, 想要测试一些简单的C#语法, 或者测试一下 文件 目录 操作相关的Api, 通常的做法是建立一个C#控制台项目, 然后写代码测试, 但是这样的做法对测试简单的语法和Api来说 ...

  2. Dire Wolf——HDU5115

    Dire wolves, also known as Dark wolves, are extraordinarily large and powerful wolves. Many, if not ...

  3. Codeforces Round #652 (Div. 2) E. DeadLee 贪心

    题意: 派会上有n种食物,每种食物有wi份.有m个朋友,每一个朋友有两种他喜欢吃的食物xi,yi.你需要判断他的朋友是否都能吃到食物.如果都能吃到食物,那么要输出朋友来的顺序,不能的话输出" ...

  4. Keywords Search HDU - 2222 AC自动机板子题

    In the modern time, Search engine came into the life of everybody like Google, Baidu, etc. Wiskey al ...

  5. 力扣992.K个不同整数的子数组-C语言实现

    题目 原题链接 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续.不一定独立的子数组为好子数组. (例如,[1,2,3,1,2] 中有 3 个不同的整数: ...

  6. 7.Topic交换机之模拟文件分类

    标题 : 7.Topic交换机之模拟文件分类 目录 : RabbitMQ 序号 : 7 Password = "123456", AutomaticRecoveryEnabled ...

  7. Redis面试常见问题(一)

    一.redis 简介简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向.另外,redis 也经 ...

  8. Win10永久禁用驱动程序强制签名

    在win10下用一个命令就可以禁用驱动程序强制签名 1.禁止强制签名,以管理员的身份运行cmd 执行以下命令 bcdedit.exe /set nointegritychecks on 恢复默认验证, ...

  9. VSCode VUE常用配置

    {   // vscode默认启用了根据文件类型自动设置tabsize的选项   "editor.detectIndentation": false,   // 重新设定tabsi ...

  10. Gym 101128F Landscaping(网络流)题解

    题意:n*m的地,从有高地和低地,从高地走到低地或者从低地走到高地花费a,把高地和低地互相改造一次花费b.现在要走遍每一行每一列,问最小花费 思路:超级源点连接所有低地,容量b:所有地向四周建边,容量 ...