如何在Django中处理cookies – 设置cookies的方法

如何在Django中处理cookies – 设置cookies的方法

处理cookies是Web应用的重要概念。Django提供了一种直接与cookies交互的方式。cookies允许我们存储和检索保存在会话中的数据。会话和cookies彼此不同,我们将在进一步的教程中进行讨论。这些cookies是有时间限制的;它们将在指定的时间之后自动删除。

当我们访问任何网站并登录到该页面时,它会要求存储我们的用户ID和密码,并基于我们先前登录的会话自动填充一些详细信息。这全部的过程都是由cookies完成的。此外,我们可以将cookie存储在客户端计算机上,以便使用户交互更加便捷。

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

让我们首先了解一下cookies。

在Django中什么是cookies

Cookies也称为HTTP cookies。它是由web浏览器创建的小型文本文件,并且在响应特定的Web服务器请求时进行维护。该文本文件在本地计算机上保存,并且大多数浏览器都会在隐私和安全设置下显示生成的cookies。

用户使用HTTP协议发送请求,但这是无状态的。它不能帮助识别用户是新用户还是之前已访问过该站点。

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

cookies提供了许多在HTTP中不可能实现的功能。

Django中的cookies是如何工作的

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

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

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

为什么我们在Django中需要cookies

当我们在未签出的情况下登录到电子商务网站或Facebook时,它会保持登录状态,以便我们下次访问时仍然是已登录的。这是通过cookies实现的(包含用户会话信息)。

在几个电子商务网站上,cookies还用于产品推荐。

Django中的cookies属性

cookie属性可以执行两个任务 – 它可以设置cookies到用户计算机并访问这些cookies。让我们详细了解这些概念。

在Django中设置cookies

这个属性用于设置服务器发送给用户浏览器以保存数据的cookies。cookie()方法的语法如下。

set_cookie(cookie_name, value, max_age = None, expires = None)

名称 – 它指定了cookie的名称。

value – 用于指定要存储在用户计算机中的具体值。

expires- 用于定义cookie的时间限制。如果未指定时间限制,它将在浏览器关闭之前一直有效。

过期时间 – 它是一个以”Wdy DD-Mon-YY HH:MM:SS GMT”或日期时间格式的字符串。如果过期时间是一个日期时间对象,将使用 有效期

在Django中获取cookie

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

request.COOKIES['cookie_name']

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

Django Cookie实现

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

def setcookie(request):
    html = HttpResponse("<h1>Welcome to Django Website</h1>")
    html.set_cookie('Django', 'We are setting a cookie', max_age = None)
    return html

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

path('setcookie', views.setcookie)

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

这里,我们将为获取cookies编写视图。

view.py

def getcookie(request):
    show = request.COOKIES['Django?]
    html = "<center> New Page <br>{0}</center>".format(show)
    return HttpResponse(html)

urls.py

path('getcookie', views.showcookie),

输出:

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

以上代码的说明 –

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

我们在不同的函数中定义了cookie – 第一个函数会将cookie设置到用户的计算机上,第二个函数会用变量在COOKIE中附加它来显示或接收已设置的cookie。

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

python manage.py runserver

更新 Cookie

我们可以修改一个已定义的 cookie。让我们来看下面的示例。

def updating_cookie(request):
    html = HttpResponse("We are updating  the cookie which is set before")
    html.set_cookie('JavaTpoint','Updated Successfully')
    return html

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

path('updating_cookie', views.updating_cookie),

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

输出:

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

代替使用 Httpresponse ,我们可以使用重定向功能来更新cookie,不过在这里我们将使用设置cookie的功能。

现在,我们将使用渲染函数来添加更新。

在Django中删除Cookie

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

正如我们所知道的,有一个可选参数 max_age 默认情况下可以删除cookie会话。

为了删除cookie,我们在views.py文件中添加以下代码。

def deleting_cookie(request):
    html = HttpResponse("Deleting the cookie which is set")
    html.delete_cookie('JavaTpoint','Updated Successfully')
    return html

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

path('delete_cookie',views.deleting_cookie),

输出:

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

cookie的处理方法的不同方法

可以使用“expires”属性来处理cookie会话的结束。我们可以修改过期函数并了解如何删除cookie。让我们看看以下语法。

response.cookies['cookie_name']['expires'] = datetime.today() + timedelta(days= number_of_days)

从请求中读取Cookie

网站通过用户请求发送Cookie。因此,服务器在每个请求中获得一个Cookie。Django提供了一种简单的方式来访问Cookie。

  • 使用request.COOKIES[]

我们已经在上面的部分进行了讨论。

  • 使用request.COOKIES.get()

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

COOKIES.get('cookie_name', 'value')

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

我们需要进行 重定向(redirect()) ,所以现在导入它。

我们需要进行 重定向(redirect()) ,所以现在导入它。

用于cookies的代码

def setcookie(request):
    if request.COOKIES.get('visits') is not None:
        value = request.COOKIES.get('visits')
        text = request.COOKIES.get('JavaTpoint')
        html = HttpResponse("

# {0}You have requested this page {1} times

".format(text, value))
        html.set_cookie('visits', int(value) + 1)
        return html
    else:
        return redirect('/setcookie')

输出

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

Django启用和禁用Cookie

设置Python文件定义了哪些Cookie是启用和禁用的。会话变量在处理会话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 Cookie的限制

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

结论

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程