【问题标题】:Delete View With Confirmation Prompt - Django使用确认提示删除视图 - Django
【发布时间】:2019-06-28 09:20:49
【问题描述】:

我想使用确认提示删除公司。我不想重定向到新模板。

class CompanyDeleteView(LoginRequiredMixin, generic.DeleteView):
    model = Company
    template_name = 'company/company_confirm_delete.html'

【问题讨论】:

    标签: django django-models django-forms django-templates django-views


    【解决方案1】:

    当您单击删除按钮时,使用 JavaScript 显示弹出窗口。在该弹出窗口中,将有一个指向您的删除视图的链接。 因此,不要在删除按钮中提供链接,而是在此处提供确认弹出窗口并在该弹出窗口中写入链接。

    <script>
    function myFunction() {
      var txt;
      if (confirm("Do you want to delete!")) {
       //go to your delete path
      } else {
      //don't do anything
      }
    
    }
    </script>
    

    在你的按钮中你可以像这样调用这个函数

    <button onclick="myFunction()">Delete it</button>
    

    【讨论】:

      【解决方案2】:

      最简单的方法是重载get 方法:

      class CompanyDeleteView(LoginRequiredMixin, generic.DeleteView):
          model = Company
      
          def get(self, request, *args, **kwargs):
              return self.delete(request, *args, **kwargs)
      

      【讨论】:

      • 请注意,允许“GET”HTTP 操作改变数据是不好的做法。相关讨论:softwareengineering.stackexchange.com/questions/188860/…。这就是需要确认提示的根本原因。还有很多例子表明使用简单的链接来改变数据是一个坏主意——例如,网络爬虫可以用“删除”链接来摧毁一个网站。第二个响应是一个更好的选择(并且仍然有一个弹出提示)。
      猜你喜欢
      • 2016-12-15
      • 1970-01-01
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 2011-01-01
      相关资源
      最近更新 更多