# python之cookie # 作用:登陆页面的控制,类似于密钥对登陆。
from django.shortcuts import render, redirect user_info = { 'root1': {'pwd': '123'}, 'root2': {'pwd': '234'} } def login(request): if request.method == "GET": return render(request, 'login.html') if request.method == "POST": u = request.POST.get('username') p = request.POST.get('pwd') dic = user_info.get(u) if not dic: return render(request, 'login.html') if dic['pwd'] == p: res = redirect('/index.html') res.set_cookie('username111', u) return res else: return render(request, 'login.html') def index(request): v = request.COOKIES.get('username111') if not v: return redirect('/login/') return render(request, 'index.html', {'current_user': v})
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form method="POST" action="/login/"> <input type="text" placeholder="用户名" name="username"> <input type="password" placeholder="密码" name="pwd"> <input type="submit" value="提交"> </form> </body> </html>
python之cookie # 作用:登陆页面的控制,类似于密钥对登陆。
设置cookie时的参数
def cookie(request): request.COOKIES request.COOKIES['username666'] # 定义一个新的cookie v = request.COOKIES.get('username666') # 获取cookie的用户名 print(v) return HttpResponse('ok') # 1. 封装某个登陆页面的cookie,首先我们得获原来的页面 response = render(request, 'index.html') response = redirect('/index/') # 2. 然后我们知道某个登陆的用户名,进行封装(如,封装root1) response.set_cookie('new_users_cookie', root1) # 封装cookie的时候还可以加上其他的参数 response.set_cookie('web1',root2,max_age=10) # max_age 单位是秒 response.set_cookie('web2', root2, expires=30) # expires指的是具体时间,默认是天 import datetime current_data = datetime.datetime.utcnow() # 获取当前时间 allow_time = current_data + datetime.timedelta(days=+3) # 当前时间+30天 response.set_cookie('web3',allow_time) 下面还有几个简单参数 path="/" domain=none # 指定的域名 secure=false # https传输 httponly=false # 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)简单隐藏密码 response.set_cookie('web2', root2, path='/') response.set_cookie('web2', root2, domain='dsfa.xx.com') response.set_cookie('web2', root2, httponly=False) response.set_cookie('web2', root2, secure=False)
注意:注销cookie,可以把cookie设置为当前时间
jquery-cookie
<!--- 利用jquery的cookie插件,传递数 --->
<script src="jquery-1.12.4.js"></script>
<script src="jquery-cookie_1.12.4.js"></script>
<script>
function changePageSize(ths) {
var v = $(ths).val(); // 获取input标签,输入的值
$.cookie('per_page_count', v); // 定义一个per_page_count,如果后端想获取cookie,通过get方法
}
后端同样的用get方法获取
requery.COOKIE.get( "per_page_count" )
对于生成cookie还可以加密文
obj = obj.set_signed_cookie('username', 'root1',salt='加密密码')
获取
request.get_signed_cookie( 'username',salt='加密密码' )
浙公网安备 33010602011771号