我正在尝试使用DRF 3.0中的动态字段创建一个序列化程序,如here所述。我应该为POST,GET和OPTIONS请求返回不同的字段。
但是,当我向服务器发出OPTIONS请求时,似乎在request.method
中使用“POST”调用了我的序列化程序。
我也调查了request._method
,但这是一回事。那么,我如何区分'POST和'OPTIONS'?
感谢。
答案 0 :(得分:5)
我遇到了同样的问题。首先不明白为什么,启用我的自定义权限类后,我没有在元数据中收到有关ACTIONS的任何信息。阿德拉恩在这里指出了正确的方向。
作为一个解决方案,我在我的权限类中添加了一个额外的'if',它将request._request.method检查为OPTIONS,如下所示:
if request.method == 'POST' or request.method == 'DELETE':
# Make an exception for redirected OPTIONS requests
# See: http://stackoverflow.com/questions/30460409/how-do-i-check-for-options-request-in-django-rest-framework-3-0-serializer
if request._request.method == "OPTIONS":
return True
希望这有助于任何人。
答案 1 :(得分:1)
如果您使用的是jQuery Ajax,可以尝试在Ajax选项中添加以下选项:
headers: {'X-HTTP-Method-Override': 'OPTIONS'}
我必须做同样的事情来发送PATCH请求。