首页 > 解决方案 > Django REST:OPTIONS 请求注册为 PUT

问题描述

每当浏览器发送一个 OPTIONS 请求时,Django REST 将其注册为一个 PUT 请求。

当我注意到它时,我正在编写我的许可代码。我使用传递给def has_object_permission( self, request, view, obj ):.

Usingrequest.method将为除 OPTIONS 之外的每个请求返回正确的请求方法。但是,当我在项目的不同部分中使用request.method我的函数时,会返回正确的响应。该功能get_permission( self, request, view ):可能有问题吗?has_object_permission()

目前我只是检查请求是否是 PUT,因为我相信 Django 无论如何都不会使用 PUT 请求。但是,如果我可以改用实际名称,那就太好了。

我的 Django REST 版本是3.9.0

标签: pythondjangodjango-rest-frameworkhttp-method

解决方案


OPTIONS 请求通常用于跨域资源共享 (CORS) 中所谓的“飞行​​前”请求。这并没有什么问题has_object_permission(),只是这些飞行前请求可能不打算由您的视图处理。此 SO 帖子中有更详细的答案: https ://stackoverflow.com/a/29954326/784648


推荐阅读