django - Django:从请求中删除cookie
问题描述
我知道如何从响应中删除 cookie:
response = HttpResponseRedirect(self.get_success_url())
response.delete_cookie("item_id")
return response
但是如何从请求中删除 cookie?
我有一个只有请求但没有响应的视图:
cart_id
当用户到达我的“thanks.html”页面时,我想删除cookie。
def thanks(request):
order_number = Order.objects.latest('id').id
return render(request, 'thanks.html', dict(order_number=order_number))
解决方案
您不能从请求中删除 cookie,否则这将是徒劳的。您从服务器端“删除”(和设置)cookie 的方式是在响应中发出特定的标头。该请求仅包含客户端发送的标头。
所有视图都有响应,这里不是很清楚,因为没有任何名为“响应”的东西,但render
总是返回一个。
render()
render(request, template_name, context=None, content_type=None, status=None, using=None)
将给定的模板与给定的上下文字典相结合,并返回一个带有渲染文本的 HttpResponse 对象。
Django 没有提供返回 TemplateResponse 的快捷函数,因为 TemplateResponse 的构造函数提供了与 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
推荐阅读
- javascript - 使用各种参数访问此数组
- android - 在 android 工具栏内的 SearchView 提示中设置搜索图标后的光标位置
- c# - 如何轻松找到我的应用程序需要提升权限的原因?
- select - 结合使用 Rust 库 reqwest 和 select
- swift - 如何在 eventStore.save 中添加事件?
- c++ - 如何使用 MySQL Server 8.0 为 Qt 构建 MySQL 插件?
- google-sheets - 将多行数组合并为单行
- rust - Rust 紫水晶的画布?
- javascript - 如何将输入的值设置为与所选收音机的值相同?
- font-awesome - 减少 Font Awsome Hamburger 内 3 个条的高度和宽度