编辑
2024-09-24
Python
00

目录

一、Cookie与Session简介
二、Django操作Cookie
三、Django操作Session
四、Cookie和Session的区别
五、登录认证案例
引用

一、Cookie与Session简介

  • Cookie:Cookie是存储在客户端浏览器中的小型数据,用于存储用户的状态信息,如登录信息。它以键值对的形式存在,浏览器可以选择保存或拒绝这些信息。

  • Session:Session是存储在服务器端的用户数据,通常包含用户的状态信息。Django通过Session在服务器上保存用户的相关数据,并通过一个唯一的Session ID(随机字符串)与客户端进行关联。

image.png

image.png

二、Django操作Cookie

在Django中,Cookie的操作非常简单。以下是一些常用的Cookie操作示例。

1. 获取Cookie

python
def get_cookie(request): username = request.COOKIES.get('username', None) # 获取用户名,默认为None

2. 设置Cookie

python
from django.http import HttpResponse def set_cookie(request): response = HttpResponse("设置Cookie") response.set_cookie('username', 'your_username', max_age=3600) # 设置1小时后过期 return response

3. 删除Cookie

python
def delete_cookie(request): response = HttpResponse("删除Cookie") response.delete_cookie('username') return response

三、Django操作Session

Django默认支持Session,并将其数据存储在数据库中。以下是Session的常见操作示例。

1. 获取Session

python
def get_session(request): user_id = request.session.get('user_id', None) # 获取用户ID,默认为None

2. 设置Session

python
def set_session(request): request.session['user_id'] = 123 # 设置用户ID request.session['username'] = 'your_username' # 设置用户名

3. 删除Session

python
def delete_session(request): del request.session['user_id'] # 删除用户ID

4. 清空Session

python
def clear_session(request): request.session.flush() # 清空当前用户的所有Session数据

四、Cookie和Session的区别

  • 存储位置

    • Cookie存储在客户端,Session存储在服务器。
  • 安全性

    • Cookie可能被篡改或泄露,而Session相对安全,因其存储在服务器上。
  • 大小限制

    • Cookie的大小通常限制在4KB,而Session的大小仅受服务器限制。

五、登录认证案例

以下是一个简单的登录认证示例,使用Cookie和Session来管理用户状态:

python
from django.shortcuts import render, redirect def login(request): if request.method == 'POST': username = request.POST.get('username') request.session['username'] = username # 设置Session response = redirect('home') # 重定向到主页 response.set_cookie('username', username) # 设置Cookie return response return render(request, 'login.html') def home(request): username = request.COOKIES.get('username', request.session.get('username', None)) return render(request, 'home.html', {'username': username})

引用

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:GYC

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!