Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于类的视图无法识别PUT和DELETE方法_Python_Django_Django Class Based Views - Fatal编程技术网

Python 基于类的视图无法识别PUT和DELETE方法

Python 基于类的视图无法识别PUT和DELETE方法,python,django,django-class-based-views,Python,Django,Django Class Based Views,我使用基于类的视图,并通过ajax调用PUT、delete方法,但Django没有识别这些方法,并给出了403错误。但是根据它的说法,它应该支持这些方法 我的代码: class MynDetail(TokenRequiredMixin, View): def post(self, request, *args, **kwargs): ''my code here'' def put(self, request, *args, **kwargs):

我使用基于类的视图,并通过ajax调用PUT、delete方法,但Django没有识别这些方法,并给出了403错误。但是根据它的说法,它应该支持这些方法

我的代码:

class MynDetail(TokenRequiredMixin, View):
    def post(self, request, *args, **kwargs):
             ''my code here''  

    def put(self, request, *args, **kwargs):
        ''my code here''

    def delete(self, request, *args, **kwargs):
        ''my code here''
Django无法识别上述视图中的put和delete

编辑:

我在这里使用了两个混合器

class TokenRequiredMixin(object):
    """
    check if user token cookie exist or not
    """
    def dispatch(self, request, *args, **kwargs):
        if 'user_token' not in request.COOKIES.keys():
            return redirect(reverse('login-view'))
        else:
            url = get_base_url(request, 'v1')
            valid_token = check_token_validity(url, request.COOKIES.get('user_token'))
            if valid_token.get('token') is None:
                response = redirect(reverse('login-view'))
                response.delete_cookie('user_token')
                response.delete_cookie('user_uid')
                return response
        return super(TokenRequiredMixin, self).dispatch(request, *args, **kwargs)


class OrgValidateMixin(object):
    """
    check if user have created an organisation or not
    If not, then redirect him to create org page
    if yes, then he must not able to create another organisation
    so he can't access create organisation page.
    """

    def get_token(self):
        return self.request.COOKIES.get('user_token')


    def get_organisation(self):
        token = self.get_token()
        url = get_base_url(self.request, 'v1')
        return check_user_org(url, token)

    def dispatch(self, request, *args, **kwargs):
        user_org_exists = self.get_organisation()
        current_path = request.get_full_path()
        create_org_path = reverse('create-org-view')

        if (current_path != create_org_path) and not user_org_exists :


Edit : 

 return redirect(reverse('create-org-view'))
    elif (current_path == create_org_path) and user_org_exists :
        return redirect(reverse('portal-dashboard'))

    return super(OrgValidateMixin, self).dispatch(request, *args, **kwargs)

确保您拥有CSRF令牌,与POST相同

我也遇到了同样的问题,提出了一个删除请求,得到了403,并在chrome控制台中进行了检查,得到了以下结果:


确保您拥有与POST相同的CSRF令牌

我也遇到了同样的问题,提出了一个删除请求,得到了403,并在chrome控制台中进行了检查,得到了以下结果:


HTTP-403表示禁止访问。
TokenRequiredMixin
中是否运行了一些访问机制?同意@AKS,“不允许使用方法”应该是405,而不是403。@AKS是的,它检查令牌是否可以添加
TokenRequiredMixin
的实现以及ajax调用?HTTP-403表示禁止访问。在
TokenRequiredMixin
中是否运行了一些访问机制?同意@AKS,“不允许使用方法”应该是405,而不是403。@AKS是的,它检查令牌您可以添加
TokenRequiredMixin
的实现以及ajax调用吗?