python - Django Rest Framework OPTIONS 操作仅显示 POST

标签 python django rest django-rest-framework

我正在尝试构建一个前端,该前端将检查可用于显示不同 UI 元素(如编辑按钮)的选项。我可以从 django Rest 框架后端提取选项,但它显示的唯一操作是 POST。

我将 ModelViewSet 与 DjangoObjectPermissions 一起使用。

我收到此响应 header :

Access-Control-Allow-Headers:accept, accept-encoding, authorization, content-type, dnt, origin, user-agent, x-csrftoken, x-requested-with, access-control-allow-methods
Access-Control-Allow-Methods:DELETE, GET, OPTIONS, PATCH, POST, PUT
Access-Control-Allow-Origin:*
Access-Control-Max-Age:86400
Allow:GET, POST, HEAD, OPTIONS
Content-Length:405
Content-Type:application/json
Date:Wed, 02 Aug 2017 19:40:08 GMT
Server:WSGIServer/0.1 Python/2.7.12
Vary:Accept
X-Frame-Options:SAMEORIGIN

这是发回的 json:

{  
   "name":"Project List",
   "description":"",
   "renders":[  
      "application/json",
      "text/html"
   ],
   "parses":[  
      "application/json",
      "multipart/form-data"
   ],
   "actions":{  
      "POST":{  
         "id":{  
            "type":"integer",
            "required":false,
            "read_only":true,
            "label":"ID"
         },
         "description":{  
            "type":"string",
            "required":true,
            "read_only":false,
            "label":"Description"
         },
         "name":{  
            "type":"string",
            "required":true,
            "read_only":false,
            "label":"Name",
            "max_length":80
         }
      }
   }
}

我尝试从响应 header 中读取允许的操作,但事实证明这是不可能的。有没有办法让 Django Rest Framework 显示用户的所有可用操作?

最佳答案

默认DRF renders options only for POST and PUT methods 。如果您想将此行为扩展到更多 HTTP 方法,您需要创建 SimpleMetadata 的子类并重写 define_actions(...) 方法。

关于python - Django Rest Framework OPTIONS 操作仅显示 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45469838/

相关文章:

django - nginx 未知指令 "upstream"

java - 通过 JAX RS 公开可变参数或集合参数

javascript - 如何调用外部 API,然后从 hapi.js Api 返回此数据

javascript - Eloquent Javascript,listToArray。当输入数组有超过 3 个元素时,为什么我的 for 循环返回 rest [object]

python - 在赋值错误之前引用事件变量,我不知道如何修复它

Python + opencv :ValueError: setting an array element with a sequence

python - for in 循环内的变量赋值

python - 多处理中共享项目是否有内存限制?

python - Django 使用 Mysql 返回无日期时间字段

python - Openshift Django 缩放