当前位置: 首页 > 知识库问答 >
问题:

删除表单中的验证

步致远
2023-03-14

我已经创建了一个删除对象的表单,但是我需要检查想要删除对象的用户是创建该对象的用户。我希望在表单(以及视图)中检查它,因为它是一个业务约束。在init、delete或clean方法中,哪里是检查的最佳位置?

class DeleteFooForm(forms.ModelForm):
    class Meta:
        model = Foo
        fields = []

        def __init__(self, user, *args, **kwargs):
            super(DeleteFooForm, self).__init__(*args, **kwargs)
            self.user = user

        def delete(self):
            if self.user is not self.instance.user:
                raise PermissionDenied("Wrong user")        

            self.instance.delete()

            # more actions, send email, etc.

共有1个答案

竺和洽
2023-03-14

实际上,这应该发生在clean方法中:这是验证的地方。这样做的主要原因是,您可以遵循常规的验证方法,即引发一个ValidationError,该ValidationError,将被form API捕获并显示为错误。

您当然不希望在__init__中执行此操作,因为即使在最初显示表单时,这也会引发错误,而delete已经太晚了。

 类似资料:
  • 我在做单链表实现,我记得Linus Torvalds在这里谈到过。 在单链表中,为了删除节点,我们应该可以访问上一个节点,然后更改它当前指向的节点。 因此,无论如何,我们都应该可以访问上一个节点。 但是Linus Torvalds通过在C中使用地址的概念删除了这个特例。因此head也有“前面的东西”,即指向head的head的地址。因此,他使用了C的指针和地址特性来删除特殊情况。 我认为这种单链表

  • 我目前正在实现一个链表,在一个删除元素的函数上遇到了一些问题。下面是整个功能。如果列表为空,则退出程序。如果列表只有一个元素,那么我只使用另一个函数

  • 问题内容: 页面包含如下表格。 1)如果我插入表单 validate =“ true” ,则在页面加载此表单后,将请求提交到邮件操作(此时尚未创建验证xml)。 2)创建验证xml后(与动作相同),然后向该页面的控制请求返回的动作返回404页面。 我错过了什么? 验证XML 如果我不添加验证,那么一切都会正常进行。 struts.xml 问题答案: 是Struts2提供的预定义结果之一; 基本上,

  • 本文向大家介绍JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理),包括了JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)的使用技巧和注意事项,需要的朋友参考一下  先上三张效果图:     这些功能在Java Web开发中可能是经常需要的,虽然很简单却使很实用的功能,这里记录下以免忘记。 1. 先说表单提交前验证:后台经常用到(这里

  • 问题内容: 我有一个停用词列表。我有一个搜索字符串。我想从字符串中删除单词。 举个例子: 现在,代码应删除“ What”和“ is”。但是在我的情况下,它会去除“ a”和“ at”。我在下面给出了我的代码。我可能做错了什么? 如果输入查询为“什么是Hello”,则输出为: 为什么会这样? 问题答案: 这是一种方法: 我注意到,如果列表中包含小写字母,您还希望删除该单词,因此我在条件检查中添加了对的

  • 我得到以下异常: 关于这个案子有什么建议吗?