Python教程-如何在Django中处理Cookie - 设置Cookie的方法
处理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。
为什么我们在Django中需要Cookie?
当我们在电子商务网站或Facebook登录后,即使没有注销,下次访问我们的帐户仍然保持登录状态。Cookie用于实现这一点(包含用户会话信息)。
Cookie还用于在一些电子商务网站上提供产品推荐。
Django中的Cookie属性
Cookie属性可以执行两个任务 - 它可以将Cookie设置到用户计算机上,并访问这些Cookie。让我们详细了解这些概念。
在Django中设置Cookie
该属性用于设置服务器发送到用户浏览器以保存数据的Cookie。下面是cookie()方法的语法。
set_cookie(cookie_name, value, max_age = None, expires = None)
- 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数据。我们可以使用以下语法。
request.COOKIES['cookie_name']
让我们看看如何手动设置Django Cookie。
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)
在这里,我们将为获取Cookie编写视图。
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('javatiku','Updated Successfully')
return html
更新Cookie后,我们需要将其添加到urls.py文件中。
path('updating_cookie', views.updating_cookie),
现在,运行服务器并访问下面的页面。
输出:
除了使用Httpresponse,我们可以使用重定向函数来更新Cookie。然而,在这里我们将使用设置Cookie函数。
现在,我们将使用render函数添加更新。
删除Django中的Cookie
现在,我们将学习如何删除已放置在用户计算机上的Cookie。
正如我们所知,有一个可选的参数max_age,默认情况下会删除Cookie会话。
要删除Cookie,我们在views.py文件中添加以下代码。
def deleting_cookie(request):
html = HttpResponse("Deleting the cookie which is set")
html.delete_cookie('javatiku','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(),所以现在导入它。
Cookie的代码
def setcookie(request):
if request.COOKIES.get('visits') is not None:
value = request.COOKIES.get('visits')
text = request.COOKIES.get('javatiku')
html = HttpResponse("<center><h1>{0}<br>You have requested this page {1} times</h1></center>".format(text, value))
html.set_cookie('visits', int(value) + 1)
return html
else:
return redirect('/setcookie')
输出
启用和禁用Django Cookie
设置Python文件定义了哪些Cookie启用和禁用。会话变量在处理会话Cookie时可用于设置。如果需要,可以手动启用和禁用Cookie。如果需要,可以将会话级别的Cookie设置为true。
默认情况下,它们设置为FALSE。Cookie是加密的,因此非常安全。会话Cookie可以用于跟踪用户访问特定网站的次数。
Cookie的重要要点
以下是一些重要要点,您应该记住。
- Cookie永远不用于存储诸如密码之类的敏感数据。原因是Cookie以明文文件的形式存储,任何人都可以读取敏感数据。
- 许多浏览器不允许保存超过4KB的数据的Cookie。
- 假设一个网站放置了大小为4KB的10个Cookie。一旦Cookie放置在用户的计算机上,它将在每次请求时与服务器一起发送。每当用户请求服务器时,它都必须发送额外的40KB数据。
- 用户可以禁用接受Cookie的功能或永久删除Cookie。
Django Cookie安全性问题
除了Cookie的优点,还存在Cookie的缺点。
- Cookie数据可能被滥用。
- 我们可以轻松跟踪用户。
- 客户端可以删除Cookie。
Django Cookie的限制
- Cookie可以存储4096字节的数据。
- 浏览器和服务器都可以存储Cookie。
结论
我们已经讨论了Django Cookie的所有重要概念以及如何将它们应用到我们的项目中。我们已经定义了如何设置、获取、更新和删除Cookie。Cookie有助于识别用户并快速检索数据。系统不总是访问数据库并搜索数据,然后将结果返回给用户。