使用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。这样用户名或者密码就不会暴漏在浏览器中了。

 

posted on 2018-03-22 16:57  hello_xiaoyu  阅读(173)  评论(0编辑  收藏  举报