下面是详细讲解“Django 中 cookie 的使用”的完整攻略。
什么是 Cookie?
首先,我们需要了解什么是 Cookie。Cookie 是服务器存储在客户端计算机上的小文件,以便下次访问时,服务器可以在客户端计算机的浏览器中读取这些 Cookie 并且根据 Cookie 来识别客户端。在 Web 应用程序中,Cookie 通常用于记录用户跨越多个页面的会话信息。
Django 中 Cookie 的使用
Django 中的 HttpResponse 类提供了在响应中设置 Cookie 的方法。该方法是 set_cookie(),该方法的原型如下所示:
HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False, samesite=None)
key
: Cookie 名称。value
: Cookie 值。如果为None
,则会删除该 Cookie。max_age
: Cookie 的存活时间(秒)。 如果未指定max_age
或expires
,则 Cookie 将在浏览器关闭时自动删除。默认为None
。expires
: Cookie 的过期时间。可以是datetime.datetime
或字符串格式的日期。如果未指定max_age
或expires
,则 Cookie 将在浏览器关闭时自动删除。默认为None
。path
: Cookie 在服务器上存储的路径。 默认为'/'
,整个域内都可以访问此 Cookie。domain
: Cookie 所属的域。 默认为当前访问域。 如果指定了域,Cookie 只能被该域的页面访问。secure
: 如果为True
,则 Cookie 只能通过 HTTPS 连接发送。 默认为None
。httponly
: 如果为True
,则 Cookie 只能通过 HTTP 或 HTTPS 连接发送,不能通过程序(例如 JavaScript)访问。默认为False
。samesite
: 它规定浏览器不应该在跨站点请求中发送 Cookie。 可以是'lax'
、'strict'
或None
。默认为None
,表示不指定SameSite
标志。
下面是一个设置 Cookie 的例子:
from django.http import HttpResponse
def my_view(request):
response = HttpResponse("Hello, World!")
response.set_cookie('my_cookie', 'cookie_value')
return response
在上面的代码中,我们使用了 set_cookie()
方法来设置一个名为 my_cookie
的 Cookie,并将其值设置为 cookie_value
。
示例1:设置 Cookie 并读取
下面是一个设置和读取 Cookie 的完整示例:
from django.http import HttpResponse
def set_cookie(request):
response = HttpResponse("Setting cookie")
response.set_cookie('my_cookie', 'cookie_value', max_age=3600) # 设置一个 Cookie,有效期为 1 小时
return response
def read_cookie(request):
my_cookie = request.COOKIES.get('my_cookie') # 读取名为 my_cookie 的 Cookie
return HttpResponse("Cookie value: {}".format(my_cookie))
首先是 set_cookie()
视图,该视图设置了一个名为 my_cookie
的 Cookie,并将其值设置为 cookie_value
。在这个视图中,我们使用 max_age
参数设置了 my_cookie
的过期时间为 1 小时。
接下来是 read_cookie()
视图,该视图读取了名为 my_cookie
的 Cookie 的值,并将其返回给用户。在视图中,我们使用 request.COOKIES.get('my_cookie')
方法来获取 my_cookie
的值。
运行示例
- 调用设置 Cookie 的视图
http://localhost:8000/set_cookie/
,返回结果为 "Setting cookie"。 - 调用读取 Cookie 的视图
http://localhost:8000/read_cookie/
,返回结果为 "Cookie value: cookie_value",其中cookie_value
就是我们设置的my_cookie
的值。
示例2:使用 Session 实现 Cookie
我们还可以使用 Django 中的 Session 来实现 Cookie,Django 的 Session 远比原生 Cookie 更加安全。Session 使用 Cookie 存储客户端的会话信息,但是 Session 的值是在服务端存储的,因此 Session 可以避免客户端篡改会话信息。
下面是一个使用 Session 实现 Cookie 的完整示例:
from django.http import HttpResponse
def set_session(request):
request.session['my_cookie'] = 'cookie_value' # 将数据存储到 session 中
return HttpResponse("Setting session")
def read_session(request):
my_cookie = request.session.get('my_cookie') # 从 session 中读取数据
return HttpResponse("Cookie value: {}".format(my_cookie))
在上面的代码中,我们使用了 Django 中的 Session 来设置和获取会话信息。在 set_session()
视图中,我们将 my_cookie
的值设置为 cookie_value
,并将其存储在 Session 中。在 read_session()
视图中,我们使用 request.session.get('my_cookie')
方法从 Session 中读取 my_cookie
的值。
运行示例
- 调用设置 Session 的视图
http://localhost:8000/set_session/
,返回结果为 "Setting session"。 - 调用读取 Session 的视图
http://localhost:8000/read_session/
,返回结果为 "Cookie value: cookie_value",其中cookie_value
就是我们设置的my_cookie
的值。
以上就是使用 Django 中 Cookie 的使用攻略及两个示例。通过这些示例,我们可以更好的理解 Django 中 Cookie 和 Session 的使用方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django 中 cookie的使用 - Python技术站