检查DeleteView是否发布或获取? Django的

时间:2016-08-30 08:29:51

标签: django

我试图检查用户是否试图自己输入网址,或者他跟踪网址并将我需要的值放在我为他构建的表格中。 在某些Ungeneric类中,我可以检查那个东西 -

if request.method == 'GET': 

但是在DeleteView中我无法做到这一点,所以我不知道如何防止用户通过输入URL自己做坏事。 我如何使用在通用视图中执行相同功能的功能,并检查用户是自己输入网址还是填写表单?

2 个答案:

答案 0 :(得分:1)

应该是POST,没有必要自己检查。

来自docs

  

如果请求方法是POST,则仅删除给定对象。如果通过GET获取此视图,它将显示一个确认页面,其中应包含一个POST到同一URL的表单。

答案 1 :(得分:0)

默认情况下,DeleteView仅对POST请求进行删除。因此,您的用户将无法删除仅发出GET请求的项目。

但是为了您的信息,所有基于类的视图(CBV)都会调用dispatch方法,然后根据post调用以太getrequest.method

您可以直接在dispatch方法中添加一些逻辑或修改get并在那里进行检查

示例

class MyDeleteView(DeleteView):
    def post(self, request, *args, **kwargs):
        ...

    def get(self, request, *args, **kwargs):
        # here you can make redirect to any url
        ...