使用cookie实现一个网页的小功能:在网页浏览器中显示 ' 欢迎 xxx 登录用户 '。
1.写一个简易的表单登录页面。login_cookie.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>cookie</title> </head> <body> <form action="" method="post"> 用户名:<input type="text" name="name"><br> 密码:<input type="text" name="pwd"> <input type="submit" value="登录"> <p>{{ error }}</p> </form> </body> </html>
2.在views中做判断逻辑。
def login_cookie(request): if request.method == 'GET': return render(request,'login_cookie.html') else: name = request.POST.get('name') pwd = request.POST.get('pwd') if name == 'admin' and pwd == 'admin123': response = HttpResponseRedirect('/cookies/') response.set_cookie('cookies',name,3600) #设置cookie,由服务器响应的时候产生cookie。 return response elif name == '' or pwd == '': error = '用户名或密码不能为空' else: error = '用户名或密码错误' return render(request,'login_cookie.html',{'error':error}) def cookies(request): name = request.COOKIES.get('cookies','') #通过设置的cookie的键获取cookie的值,并渲染到登录成功的页面 return render(request,'cookies.html',{'name':name})
3. 添加url
url(r'^logincookie/$',views.login_cookie,name='logincookie'), url(r'^cookies/$',views.cookies,name='cookies')
4. 登录成功的页面。cookies.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 欢迎 {{ name }} </body> </html>
通过set_cookie()方法设置cookie,三个参数:设置的cookie的键名,cookie的值,cookie在浏览器中保持的时间,默认单位是秒。
通过request.COOKIES.get('cookie的键名')来读取cookie的值。
结果:
这就证明cookie存在一定的安全隐患。使用session相比要安全的多。
使用session的步骤:同cookie相似。(代码就不全贴了)在views中修改。(注意:要进行数据库的迁移生成django_session的表)
if name == 'admin' and pwd == 'admin123': response = HttpResponseRedirect('/cookies/') # response.set_cookie('cookies',name,3600) #设置cookie,由服务器响应的时候产生cookie。 request.session['cookies'] = name return response
def cookies(request): # name = request.COOKIES.get('cookies','') #通过设置的cookie的键获取cookie的值,并渲染到登录成功的页面 name = request.session.get('cookies','') #获取到通过request.session['cookies'] 设置的session值。 return render(request,'cookies.html',{'name':name})
结果:
生成了一个sessionid。这样用户名或者密码就不会暴漏在浏览器中了。