1.cookie

def login(request):
if request.method == "GET":
return render(request,"login.html")
else:
user = request.POST.get("user")
pwd = request.POST.get("pwd")
user_obj = UserInfo.objects.filter(user=user,pwd=pwd).first()
if user_obj:
# 如果登录成功设置cookie
obj = redirect("/index/")
obj.set_cookie("username",user)
obj.set_cookie("is_login",True,max_age=3600*24*7)
return obj
else:
return HttpResponse("error") def index(request): print(request.COOKIES)
is_login = request.COOKIES.get("is_login")
if not is_login:
return redirect("/login/")
shangpin = "香蕉"
shangpin_list = ["苹果", "荔枝", "榴莲"]
name = request.COOKIES.get("username")
return render(request,"index.html",{"shangpin":shangpin,
"shangpin_list":shangpin_list,
"name":name})

2.session

def login_session(request):
if request.method == "GET":
return render(request,"login.html")
else:
user = request.POST.get("user")
pwd = request.POST.get("pwd")
user_obj = UserInfo.objects.filter(user=user,pwd=pwd).first()
if user_obj:
#用户认证信息储存
request.session["suername"] = user
request.session["sis_login"] = True
'''
if request.COOKIE.get("sessionid"):
random_str = request.COOKIE.get("sessionid")
在django-session表中过滤session-key=random-str的记录进行update
else:
1.生成一个随机字符串
2.向django-session表中插入数据
3.响应set_cookie:{"sessionid": }
'''
return redirect("/index_session/")
else:
return HttpResponse("error")
def index_session(request):

    '''
request.session
1.request.COOKIE.get("sessionid")
2.在django-session表中过滤session-key
3.取出过滤记录的session-data反序列化数据字典 {"susername":"egon","sis_login":True} '''
sis_login = request.session.get("sis_login")
if not sis_login:
return redirect("/login_session/")
else:
shangpin = "香蕉"
shangpin_list = ["苹果", "荔枝", "榴莲"]
name = request.session.get("susername")
return render(request, "index.html", {"shangpin": shangpin,
"shangpin_list": shangpin_list,
"name": name})
def logout(request):
'''
1 request.COOKIE.get("sessionid") :23423hkjsf890234sd
2 在django-session表过滤session-key=23423hkjsf890234sd的记录删除
3 response.delete_cookie("sessionid")
'''
request.session.flush()
return redirect("/login_session/")

3.用户认证组件

前提:使用django自带的用户表 auth_user

    插入记录命令:python manage.py createsuperuser

  引入from django.contrib import auth

  1.auth.authenticate(username=user,password=pwd)  查询语句

  2.auth.login(request,user_obj)            保存用户状态信息

    request.user:全局变量。模板,视图直接可以使用

  3.auth.logout(request)                注销

  4.User.objects.create_user(username=user,password=pwd)  注册 from django.contrib.auth.models import User

  5.user = User.objects.get(username=request.user.username)

   user.set_password(raw_password="555")

from django.shortcuts import render,redirect,HttpResponse

# Create your views here.
from django.contrib import auth def login(request):
if request.method == "GET":
return render(request,"login.html")
else:
user = request.POST.get("user")
pwd = request.POST.get("pwd")
# 数据库查询该用户是否存在
user_obj = auth.authenticate(username=user,password=pwd)
if user_obj:
# 保存用户状态信息
auth.login(request,user_obj) # request.session["user_id"]=user_obj.pk
return redirect("/index/")
else:
return redirect("/login/") def index(request):
'''
print(request.user) # 默认匿名用户对象 AnonymousUser
print(request.user.id) # None
print(request.user.username) # ""
print(request.user.is_active) # False '''
if not request.user.is_authenticated:
return redirect("/login/")
name = request.user.username
return render(request,"index.html",locals()) def logout(request):
auth.logout(request)
return redirect("/login/") from django.contrib.auth.models import User
def reg(request):
if request.method =="GET":
return render(request,"reg.html")
else:
user = request.POST.get("user")
pwd = request.POST.get("pwd")
User.objects.create_user(username=user,password=pwd)
return redirect("/login/") def set_password(request):
user = User.objects.get(username=request.user.username)
user.set_password(raw_password="")
user.save()
return redirect("/login/")

   user.save()

cookie、session与用户认证组件的更多相关文章

  1. Django组件 - cookie、session、用户认证组件

    一.cookie 1.会话跟踪技术 1)什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话 ...

  2. cookie,session,用户认证组件

    一. 绘画跟踪技术 在客户端与服务端的一次会务中,多次的请求与相应,HTTP协议是无状态协议,也就是说每个请求都是独立的!无法记录前一次请求的状态.会话跟踪技术即能够实现多次回话间信息共享的作用,HT ...

  3. python 全栈开发,Day79(Django的用户认证组件,分页器)

    一.Django的用户认证组件 用户认证 auth模块 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户 ...

  4. 061.Python前端Django组件用户认证组件

    一 auth认证组件 在使用pymysql,数据库迁移的时候.,默认生成有十张表如下 查看author_user表结构 mysql> desc auth_user; +------------- ...

  5. web框架开发-Django用户认证组件

    可以用认证组件做什么 针对session的缺陷, 跟新数据时,不跟新key键, 用户认证组件是删除后再重建 用户认证组件很多功能可以直接使用 利用用户认证表(auth_user,通过Django自己创 ...

  6. django - 总结 - 用户认证组件

    用户认证组件 from django.contrib import auth 从auth_user表中获取对象,没有返回None,其中密码为密文,使用了加密算法 user = auth.authent ...

  7. 10.Django用户认证组件

    用户认证组件: 功能:用session记录登录验证状态: 前提:用户表,django自带的auth_user 创建超级用户:python manage.py createsuperuser       ...

  8. Django用户认证组件

    用户认证 主要分两部分: 1.auth模块   from django.contrib import auth 2.User对象 from django.contrib.auth.models imp ...

  9. django的用户认证组件

    DataSource:https://www.cnblogs.com/yuanchenqi/articles/9064397.html 代码总结: 用户认证组件: 功能:用session记录登录验证状 ...

随机推荐

  1. Xray写POC插件

    漏洞环境 https://www.vulnhub.com/ https://github.com/vulhub/vulhub https://github.com/QAX-A-Team/Weblogi ...

  2. Java分布式:分布式事务

    Java分布式:分布式事务 分布式事务 分布式事务就是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上.简单的说,就是一次大的操作由不同的小操作组成,这 ...

  3. Docker 常用模式

    Deployment Service Daemonset 这种模式就是确保在每个k8s的node节点上创建一个pod实例,有且仅有一个实例.当node被添加到集群中,Pod也被添加上去.当node被从 ...

  4. 什么是 CDN(超形象)

    原文地址:https://blog.csdn.net/lu_embedded/article/details/80519898 618电商节.双十一购物狂欢节,到底是什么在支撑数以万计的秒杀活动?这就 ...

  5. va_start(),va_end()函数应用

    原理解释: VA_LIST 是在C语言中解决变参问题的一组宏,在<stdarg.h>头文件下. VA_LIST的用法:            (1)首先在函数里定义一具VA_LIST型的变 ...

  6. 带你一步一步搭建TypeScript环境

    今天继续来更新,本篇文章我们讲环境搭建,主要分享一些环境搭建的学习资源及安装步骤,解决一些安装时可能会出现的问题.下面就让我们一起进入学习第一步,搭建TypeScript环境:一. 环境搭建1.1. ...

  7. (模板)hdoj1251(字典树模板题)

    题目链接:https://vjudge.net/problem/HDU-1251 题意:给定一系列字符串之后,再给定一系列前缀,对每个前缀查询以该字符串为前缀的字符串个数. 思路: 今天开始学字典树, ...

  8. Java中的事务及使用

    什么是事务? 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常由高级数据库操纵语言或编程语言(如S ...

  9. mininet:使用vxlan连接两台虚拟机的网络topo

    需改虚拟机的网络适配器,将其改为host-only 尝试ping宿主机ip地址,此时能够ping同与虚拟机相连的虚拟网卡ip地址,无法ping同其他网卡ip地址 在虚拟机和宿主机中创建网络topo 在 ...

  10. Scala Map与Tuple

    创建Map // 创建一个不可变的Map val ages = Map("Leo" -> 30, "Jen" -> 25, "Jack&q ...