如何在 Django 中处理 Cookie - 设置 Cookie 的方法

17 Mar 2025 | 6 分钟阅读

处理 Cookie 是 Web 应用程序中的重要概念。Django 提供了一种简单的方法来与 Cookie 进行交互。Cookie 允许我们存储和检索保存在会话中的数据。会话和 Cookie 彼此不同,我们将在后续教程中讨论。这些 Cookie 设置有时间限制,将在指定时间后自动删除。

当我们访问任何网站并登录时,它会询问我们是否要存储用户 ID 和密码,并根据我们之前的登录会话自动填充一些详细信息。所有这些过程都通过 Cookie 完成。此外,我们可以在客户端计算机上存储 Cookie,以使用户交互更加轻松。

本教程将讨论如何在 Django 中管理 Cookie 以及它们在互联网上的用途。我们还将讨论如何使用服务器创建 Cookie。

让我们来介绍一下 Cookie。

Django 中的 Cookie 是什么?

Cookie 也称为 HTTP Cookie。它是由 Web 浏览器创建的小文本文件,作为对特定 Web 服务器请求的响应而维护。文本文件存储在计算机本地,大多数浏览器会在“隐私和安全”设置下显示生成的 Cookie。

用户通过 HTTP 协议发送请求,但这是无状态的。它无助于识别用户是新用户还是以前访问过该网站。

Cookie 包含唯一的会话 ID,用于识别用户和其他与网站上下文相关的信息。当我们登录网站时,网站会发送带有唯一用户身份的 Cookie。

Cookie 提供了许多 HTTP 无法实现的便利。

Django Cookie 如何工作?

让我们了解一下 Cookie 在互联网上的工作原理。

  • 浏览器向服务器发送请求。
  • 服务器将响应发送给浏览器,并附带一个或多个 Cookie。
  • 浏览器或客户端接收 Cookie 并将其保存为文本文件。每次用户发送请求时,浏览器都会将此 Cookie 发送给服务器,直到 Cookie 过期。
  • Cookie 在过期时会从浏览器中删除。

Cookie 用于各种目的,例如登录网站或在线购物。许多公司使用 Cookie 来跟踪用户偏好。不同网站根据其需求使用 Cookie 的方式不同。

为什么我们需要 Django 中的 Cookie?

当我们登录一个 **电子商务** 网站或 Facebook 而不注销时,下次访问我们的帐户时它仍然是登录状态。Cookie 用于实现这一点(其中包含用户会话信息)。

Cookie 也用于许多电子商务网站上的产品推荐。

Django 中的 Cookie 属性

Cookie 属性可以执行两项任务——它可以将 Cookie 设置到用户计算机上并访问这些 Cookie。让我们详细了解这些概念。

在 Django 中设置 Cookie

此属性用于设置服务器发送给用户浏览器以保存数据的 Cookie。下面是 cookie() 方法的语法。

name - 指定 Cookie 名称。

value - 用于指定我们要存储在用户计算机上的特定值。

max_age - 用于定义 Cookie 的时间限制。如果未指定时间限制,它将一直有效直到浏览器关闭。

Expires - 这是一个字符串,格式为“Wdy DD-Mon-YY HH:MM:SS GMT 或 datetime。如果 expires 是 datetime 对象,则将确定 **max_age**。

在 Django 中获取 Cookie

服务器使用 get cookies 读取先前发送的 Cookie 数据。我们可以使用以下语法。

让我们看看如何手动设置 Django Cookie。

Django Cookie 实现

在以下步骤中,我们将使用 Django 设置 Cookie。创建所有必需的配置,并将以下代码包含在 **view.py** 中。

现在,将此视图映射到 urls.py。


How to handle cookies in Django

在这里,我们将编写用于获取 Cookie 的视图。

view.py

urls.py

输出

How to handle cookies in Django

对上述代码的解释 -

在上面的 view.py 中,我们使用了 **HttpResponse** 方法,该方法将任何输出显示在屏幕上。

我们在单独的函数中定义 Cookie - 第一个函数将 Cookie 设置到用户的计算机上,第二个函数带有附加到 **COOKIE** 的变量,用于显示或接收已设置的 Cookie。

现在,使用以下命令运行服务器。

更新 Cookie

我们可以修改已定义的 Cookie。让我们看下面的例子。

更新 Cookie 后,我们需要将其附加到 urls.py 文件中。

现在,我们运行服务器并访问以下页面。

输出

How to handle cookies in Django

除了使用 **Httpresponse**,我们还可以使用 redirect 函数来更新 Cookie。但是,这里我们将使用 set cookies 函数。

现在,我们将使用 render 函数添加更新。

在 Django 中删除 Cookie

现在,我们将学习如何删除已放置在用户计算机上的 Cookie。

正如我们所知,有一个可选参数 **max_age**,它默认会删除 Cookie 会话。

要删除 Cookie,请将以下代码添加到 views.py 文件中。

现在,我们将此视图添加到 urls.py 文件中。

输出

How to handle cookies in Django

处理 Cookie 的不同方法

‘expires’属性可用于处理 Cookie 会话的结束。我们可以修改 expire 函数并了解如何删除 Cookie。让我们看以下语法。

从请求中读取 Cookie

网站会将 Cookie 与用户请求一起发送。因此,服务器在每次请求时都会收到一个 Cookie。Django 提供了访问 Cookie 的简单方法。

  • 使用 request.COOKIES[]

我们在上面部分已经讨论过。

  • 使用 request.COOKIES.get()

使用请求对象上的此方法,我们可以轻松获取特定值。以下是此方法的语法。


How to handle cookies in Django

我们需要 **redirect()**,所以现在导入它。

我们需要 **redirect()**,所以现在导入它。

Cookie 代码

输出

How to handle cookies in Django

Django Cookie 启用和禁用

settings Python 文件定义了哪些 Cookie 已启用和禁用。settings 中提供了 session 变量,用于处理会话 Cookie。我们可以通过设置、更新和删除 Cookie 来手动启用和禁用 Cookie。有一些会话级别的 Cookie 可以根据需要设置为 true。

默认情况下,它们设置为 FALSE。Cookie 是加密的,因此它们相当安全。会话 Cookie 可用于跟踪用户访问特定网站的次数。

Cookie 的要点

以下是您应该牢记的一些要点。

  • Cookie 绝不用于存储密码等敏感数据。原因是 Cookie 存储在纯文本文件中,任何人都可以读取这些敏感数据。
  • 许多浏览器不允许存储超过 4kb 的 Cookie 数据。
  • 假设一个网站放置了 10 个大小为 4kb 的 Cookie。一旦 Cookie 被放置在用户的计算机上,它将与每次请求一起发送到服务器。每次用户请求服务器时,它都必须发送额外的 40kb 数据。
  • 用户可以禁用接受 Cookie 的功能,或者永久删除 Cookie。

Django Cookie 的安全问题

除了 Cookie 的优点之外,Cookie 也有缺点。

  • Cookie 数据可能会被滥用。
  • 我们可以轻松地跟踪用户。
  • 客户端可能会删除 Cookie。

Django Cookies 的限制

  • Cookie 可以存储 4096 字节的数据。
  • 浏览器和服务器都可以存储 Cookie。

结论

我们已经讨论了 Django Cookie 的所有重要概念以及如何在项目中使用它们。我们已经定义了如何设置、获取、更新和删除 Cookie。Cookie 有助于识别用户和快速检索数据。系统不总是去数据库搜索并返回结果给用户。