COOKIE SESSION
今天学了cookie和session,cookie是存储在客户端的,session是存储在服务器端,cookie存储安全要求较低的数据。
cookie是Httprespone对象的方法。
而redirect是Httprespone的子类
因此redirect创建的对象可以设置cookie
做的一个案例是用Django创建一个登录页面,下次再回到登录页面时自动在用户名框填写记住的用户名
案例代码:
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<form action="/login_check_cookie" method="post">
用户名:<input type="text" name="username" value="{{username}}"></br>
密码:<input type="password" name="password" ></br>
<input type="checkbox" name="remember">记住用户名</br>
<input type="submit" value="登录">
</form>
</body>
</html>
对应的视图处理函数:
def login_cookie(request):
'''显示登录页面'''
# 判断是否存在Cookie
if 'username' in request.COOKIES:
# 如果存在就获取COOKIE
username = request.COOKIES['username']
# 将COOKIE获取的值传递到html页面上
else:
username = ''
return render(request,'booktest/login_cookie.html',{'username':username})
def login_check_cookie(request):
'''验证账号密码'''
# 1.获取用户名密码
username = request.POST.get('username')
password = request.POST.get('password')
remember = request.POST.get('remember')
# 2. 验证用户名密码
if username == '123' and password == '123':
# 3. 返回页面
# redirect 是Httprespone 子类 设置cookie需要Httprespone
response = redirect('/index')
# 如果正确就记住用户名
if remember == 'on':
# 设置cookie 过期时间设置为7天
response.set_cookie('username',username,max_age=7*24*36000)
return response
else:
return redirect('/login_cookie')
设置完要记得配置应用的urls.py文件。
session
session用于状态保持,当设置了session后,会自动设置一个cookie用来保存sessionid ,sessionid就是session键值的唯一标识码, session的值是经过base64加密。
session的基本操作
以键值对的格式写session:request.session[‘key’] = value
通过.get获取值并且可以设置默认值。如果不确定是否存在就使用.get
request.session.get(‘key’, 默认值)
清除所有session,在存储中删除值部分:request.session.clear()
清除session数据,在存储中删除session的整条数据:request.session.flush()
删除session中的指定键及值,在存储中只删除某个键及对应的值:del requset.session[‘key’]
案例:
当用户登录以后,在一定时间内再次访问登录页面直接跳转到首页,无需输入用户名密码
HTML页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<form action="/login_check_cookie" method="post">
用户名:<input type="text" name="username" value="{{username}}"></br>
密码:<input type="password" name="password" ></br>
<input type="checkbox" name="remember">记住用户名</br>
<input type="submit" value="登录">
</form>
</body>
</html>
views视图函数:
def login_cookie(request):
'''显示登录页面'''
# 先判断用户是否登录过
if request.session.get('islogin'):
return redirect('/index')
else:
# 判断是否存在Cookie
if 'username' in request.COOKIES:
# 如果存在就获取COOKIE
username = request.COOKIES['username']
# 将COOKIE获取的值传递到html页面上
else:
username = ''
return render(request,'booktest/login_cookie.html',{'username':username})
def login_check_cookie(request):
'''验证账号密码'''
# 1.获取用户名密码
username = request.POST.get('username')
password = request.POST.get('password')
remember = request.POST.get('remember')
# 2. 验证用户名密码
if username == '123' and password == '123':
# 3. 返回页面
# redirect 是Httprespone 子类 设置cookie需要Httprespone
response = redirect('/index')
# 1.设置session
request.session['islogin'] = True
# 如果正确就记住用户名
if remember == 'on':
# 设置cookie 过期时间设置为7天
response.set_cookie('username',username,max_age=7*24*36000)
return response
else:
return redirect('/login_cookie')
今天补充复习了简单爬虫的一些方式。
熟悉了一遍贴吧爬虫