今日份学习---COOKIE SESSION

本文介绍了在Python的Django框架中如何使用Cookie和Session进行状态管理。讲解了Cookie作为客户端存储的安全特性,以及Session在服务器端的使用,包括基本操作如设置、获取、清除和删除特定键值。通过案例展示了用户登录后自动填充用户名的功能,以及在一段时间内免登录的实现,有助于加深对Cookie和Session理解。
摘要由CSDN通过智能技术生成

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')

今天补充复习了简单爬虫的一些方式。
熟悉了一遍贴吧爬虫

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值