如何检查 django-rest-framework 3.0 序列化程序中的 OPTIONS 请求?

How do I check for OPTIONS request in django-rest-framework 3.0 serializer?

我正在尝试在 DRF 3.0 中创建一个带有动态字段的序列化程序,如 here 所述。我应该为 POST、GET 和 OPTIONS 请求 return 不同的字段。

但是,似乎当我向服务器发出 OPTIONS 请求时,我的序列化程序在 request.method 中被调用为 'POST'。 我也研究过 request._method,但这是一回事。那么,如何区分 'POST 和 'OPTIONS' ?

谢谢。

如果您使用jQuery Ajax,您可以尝试在Ajax选项中添加以下选项:

headers: {'X-HTTP-Method-Override': 'OPTIONS'}

我必须为发送 PATCH 请求做同样的事情。

我运行遇到了同样的问题。首先不明白为什么,在启用我的自定义权限 classes 的情况下,我没有在元数据中收到任何关于 ACTIONS 的信息。 AdelaN 在这里为我指明了正确的方向。

作为解决方案,我在我的许可 class 中添加了一个额外的 'if',它检查 request._request.method 是否为 OPTIONS,如下所示:

    if request.method == 'POST' or request.method == 'DELETE':
        # Make an exception for redirected OPTIONS requests
        # See: 
        if request._request.method == "OPTIONS":
            return True 

希望这对任何人都有帮助。