如何在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)
这里,我们将为获取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),
输出:
以上代码的说明 –
在上面的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),
现在,我们运行服务器并访问下面的页面。
输出:
代替使用 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),
输出:
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')
我们需要进行 重定向(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启用和禁用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有助于识别用户和快速检索数据。系统不总是需要访问数据库并搜索数据,然后将结果返回给用户。