14-Django的cookie和session

Cookie

cookie是由服务器生成的,存储在浏览器端的一小段文本信息
cookie特点:

1.以键值对的方式存储

2.通过浏览器访问一个网站时,会将浏览器存储的跟网站相关的所有cookie信息发送给该网站的服务器。request.COOKIES

3.cookie是基于域名安全的

4.cookie是有过期时间的,如果不指定,默认关闭浏览器之后,cookie就会过期

cookie记住用户名

在login.html里设置一个checkbox按钮,用户勾选之后浏览器就能记住用户名

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
POST:提交的参数在请求头里,数据比较重要用post
GET:提交的参数在url中
用post方法提交到login_check页面中
<form method="post" action="/login_check">
    用户名:<input type="text" name="username" value={{ username }}>
    密码:<input type="password" name="password">
    <input type="checkbox" name="remember">记住用户名
    <input type="submit" value="登录">
</form>
</body>
</html>

id给前端获取,name给后端获取



login_check视图

def login_check(request):
    '''登录校验视图'''

    # 浏览器提交的信息就保存在request里面
    # request.POST保存的是POST提交的参数
    # request.GET保存的是GET提交的参数

    # 1.获取提交的用户名和密码
    username = request.POST.get('username')
    passwoed = request.POST.get('password')
    remember = request.POST.get('remember') # 记住用户名
    # 2.进行登录校验
    # 实际开发的时候,用户名和密码保存在数据库中
    # 模拟
    if username == 'zhangyue' and passwoed == '123456':
         # 正确,跳转到首页index
        response = redirect('/index') # 先要初始化httpresponese对象,redirect是他的子类,所以也可以用redirect设置
        if remember == 'on':
              response.set_cookie('username',username,max_age=7*24*3600)# 设置cookie

        return response

    else:
         # 错误
        return redirect('/login')

    # 3.返回应答

视图通过html的name关键字remember = request.POST.get('remember') # 记住用户名拿到勾选情况。先初始化httpResponse()对象,用response.set_cookie()函数设置cookie。

check视图函数

def login(request):
    '''显示登录页面'''
    # 获取cookie的username
    if 'username' in request.COOKIES:
        username = request.COOKIES['username']

    else:
        username = ''
    return render(request, 'booktest/login.html',{'username':username})
request.COOKIES['username']

拿到username的cookie。

return render(request, 'booktest/login.html',{'username':username})

返回到浏览器的表单。

session

# /set_session
def set_session(request):
    '''设置session'''
    request.session['username'] = 'zhangyue'
    request.session['age'] = 25
    return HttpResponse('设置session')

# /get_session
def get_session(request):
    '''获取session'''
    username = request.session['username']
    age = request.session['age']
    return HttpResponse(username+str(age))

session的视图函数,使用方法和cookie很像

session和cookie的使用场景

cookie用在安全性不要求很高的场景,比如用户名
session用在安全性要求高的情况,比如银行卡的卡号密码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值