Django阻止页面缓存

Django阻止页面缓存,django,Django,strong text我试图阻止缓存页面,因为我不希望用户能够重新提交已保存到数据库的表单 我在views.py中尝试了以下内容 class ServiceCreate(LoginRequiredMixin, CreateView): model = Service form_class = ServiceCreateForm @method_decorator(never_cache) def dispatch(self, request, *args, **

strong text我试图阻止缓存页面,因为我不希望用户能够重新提交已保存到数据库的表单

我在views.py中尝试了以下内容

class ServiceCreate(LoginRequiredMixin, CreateView):
    model = Service
    form_class = ServiceCreateForm

    @method_decorator(never_cache)
    def dispatch(self, request, *args, **kwargs):
        return super(ServiceCreate, self).dispatch(request, *args, **kwargs)
但是,这没有效果,因为当用户点击后退按钮时,整个页面会立即显示。如何防止缓存

更新
我是Django的新手,所以我认为装饰师会指示浏览器不要缓存-我不知道还有服务器缓存。

你看到的与服务器缓存无关-这都是浏览器端的

最终,您不能100%保证表单不会被多次提交,因为用户会找到一种方法…,所以您必须在服务器上优雅地处理该问题。但是,您可以大大降低发生这种情况的可能性:

成功提交表单后,返回或使用快捷方式重定向浏览器。这将阻止浏览器刷新重新提交表单

在提交表格后使用。我最近遇到了一些奇怪的错误和数据不一致,结果是有人双击表单的提交按钮造成的。在第一次单击后禁用按钮解决了问题,同时在服务器端执行更多验证以识别重复提交

确保使用POST而不是GET提交表单。浏览器不太可能随意重新提交表单,我认为这也有助于防止错误提交


这听起来像是浏览器缓存的问题…搜索PRG模式。谢谢你详尽的回答。我认为你的第二个建议,禁用提交按钮将是最好的。