gpt4 book ai didi

Django:从请求中删除 cookie

转载 作者:行者123 更新时间:2023-12-02 17:00:28 25 4
gpt4 key购买 nike

我知道如何从响应中删除 cookie:

response = HttpResponseRedirect(self.get_success_url())
response.delete_cookie("item_id")
return response

但是如何从请求中删除 cookie?

我有一个只有请求但没有响应的 View :

当用户到达我的“thanks.html”页面时,我想删除 cart_id cookie。

def thanks(request):
order_number = Order.objects.latest('id').id
return render(request, 'thanks.html', dict(order_number=order_number))

最佳答案

您不能从请求中删除 cookie,否则这将是徒劳的。从服务器端“删除”(和设置)cookie 的方式是在响应中发出特定的 header 。该请求仅包含客户端发送的 header 。

所有 View 都有一个响应,只是这里不是很清楚,因为没有名为“response”的东西,但是 render 总是返回一个。

render()

render(request, template_name, context=None, content_type=None, status=None, using=None)

Combines a given template with a given context dictionary and returns an HttpResponse object with that rendered text.

Django does not provide a shortcut function which returns a TemplateResponse because the constructor of TemplateResponse offers the same level of convenience as render().

(重点是我的)

所以您可以做的是在生成的响应返回给用户之前更新生成的响应,如下所示:

def thanks(request):
order_number = Order.objects.latest('id').id
response = render(request, 'thanks.html', dict(order_number=order_number))
response.delete_cookie("item_id")
return response

关于Django:从请求中删除 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54385269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com