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