会话技术cookie、session

cookie

1、存数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<form action="{% url 'day01:doloading' %}" method="get">
    账号:<input type="text" name="username"><br />
    密码:<input type="text" name="passwd"><br />
    <input type="submit" value="登录">
</form>
</body>
</html>
from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.

def loading(request):

    return render(request, 'loading.html')

def doloading(request):
    username = request.GET.get('username')     # 获取输入的用户名
    passwd = request.GET.get('passwd')         # 获取输入的密码
    response = HttpResponse('登录成功')
    response.set_cookie('username', username)   # 存用户名
    response.set_cookie('passwd', passwd)       # 存用户密码

    return response

格式: response.set_cookie(key,value)

通过response通知浏览器要保存key,value形式的cookie 

设置过期时间

默认情况下,关闭浏览器cookie就会过期,有时候我们需要设置过期时间: 
格式:  response.set_cookie(key,value,expires=值)
          expires=0           立马过期
          expires=None    不过期
          expires= 值        单位是秒                                                                                                                                                                  expires=timedelta(days=值)    表示多少天后过期   hours=值 表示多少小时后过期..... 

2、取数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<form action="{% url 'day01:doloading' %}" method="get">
    账号:<input type="text" name="username" value="{{ username }}"><br />
    密码:<input type="text" name="passwd" value="{{ passwd }}"><br />
    <input type="submit" value="登录">
</form>
</body>
</html>
from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.

def loading(request):
    username = request.COOKIES.get('username')       # 获取cookie中存储的用户名
    passwd = request.COOKIES.get('passwd')           # 获取cookie中存储的密码
    if not username:
        username = ""
    if not passwd:
        passwd = ""
    data = {
        'username':username,
        'passwd':passwd,
    }
    return render(request, 'loading.html', context=data)

def doloading(request):
    username = request.GET.get('username')
    passwd = request.GET.get('passwd')
    response = HttpResponse('登录成功')
    response.set_cookie('username', username)
    response.set_cookie('passwd', passwd)

    return response

格式: request.COOKIES.get(key)

注:cookie存储数据的方式类似字典

3、删除

def delcookie(request):
    response = HttpResponse("清除成功")
    response.delete_cookie('username')   # 删除保存的用户名
    response.delete_cookie('passwd')     # 删除保存的密码
    return response

格式:response.delete_cookie(key)

4、cookie中文输入问题

可导入json模块,

使用json.dumps(存储的数据)存入,使用json.loads(获取的数据)获取数据。

如:    username = json.dumps(request.GET.get('username'))              存入时使用

           username = json.loads(request.COOKIES.get('username'))     取出时使用

session

1、存数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<form action="{% url 'day01:doloading' %}" method="get">
    账号:<input type="text" name="username" value="{{ username }}"><br />
    密码:<input type="text" name="passwd" value="{{ passwd }}"><br />
    <input type="submit" value="登录">
</form>
</body>
</html>
import json

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.

def loading(request):

    return render(request, 'loading.html')

def doloading(request):
    username = json.dumps(request.GET.get('username'))
    passwd = request.GET.get('passwd')
    # 使用session存数据
    request.session['username'] = username  # 存入用户名
    request.session['passwd'] = passwd      # 存入密码
    return HttpResponse('登录成功')

格式:  request.session[key] = value

注意:在django中存储了一个session后,django会 自动 的生成session key,并将session key与 数据自动的存储到 django_session

表中去,数据会自动的用base64编码,并会自动的让浏览器的cookie存储sessionid(就是sessison key)

2、获取数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<form action="{% url 'day01:doloading' %}" method="get">
    账号:<input type="text" name="username" value="{{ username }}"><br />
    密码:<input type="text" name="passwd" value="{{ passwd }}"><br />
    <input type="submit" value="登录">
</form>
</body>
</html>
import json

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.

def loading(request):
    # 获取session中存储的数据
    username = request.session.get('username')
    passwd = request.session.get('passwd')
    if not username:
        username = ''
    if not passwd:
        passwd = ''
    data = {
        'username': username,
        'passwd': passwd,
    }
    return render(request, 'loading.html', context=data)

def doloading(request):
    username = json.dumps(request.GET.get('username'))
    passwd = request.GET.get('passwd')
    # 使用session存数据
    request.session['username'] = username  # 存入用户名
    request.session['passwd'] = passwd      # 存入密码
    return HttpResponse('登录成功')

格式: value =  request.session.get(key)

注意: 在django中,会 自动 的将cookie中的sessionid拿出来跟数据库中的session key匹配,匹配成功后既可以获取值    

3、清除数据

def delsession(request):
    request.session.flush()         # 清除数据
    return HttpResponse('清除成功')

request.session.flush()   会清除对应的cookie及session

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值