【问题标题】:How to get a JSON response from a POST form using Django如何使用 Django 从 POST 表单中获取 JSON 响应
【发布时间】:2016-04-06 16:37:17
【问题描述】:


我正在尝试使用zermeloAPI。 我正在使用此表单的“Djangofied”版本来获取授权码。

<form action="https://helios.zportal.nl/api/v2/oauth/token" method="post">
<input type="hidden" name="grant_type" value="authorization_code"/>
<input type="text" name="code"/>
<input type="submit" value="POST"/>
</form>

我确实得到了 JSON 文件中的代码,但是

  1. JSON 在用户面前打开。
  2. 我不知道如何“保存” JSON 文件并将代码更改为 var。

【问题讨论】:

  • 如果你想在服务器端获取令牌,你应该在 python 文件中发出 post 请求,如果你应该在客户端获取它,你可以发出 ajax post 请求并然后将其发送回服务器!
  • 我想让它在服务器端,但是我如何在 python 文件中发出这种请求?

标签: json django forms python-2.7 api


【解决方案1】:

我从 api 文档中了解到,您应该发送应用程序代码并获取令牌。所以,让authorization_code 成为您的应用代码。

import requests
r = requests.post("https://helios.zportal.nl/api/v2/oauth/token", data={'grant_type': 'authorization_code', 'code': *Authorization Code*})

r.text 从服务器获取响应文本。

【讨论】:

  • JSON 有效,但是当我尝试进行身份验证时出现以下错误:class org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'code' is not present 查看表单时,authorization_code 的名称为“code”,所以我认为该名称必须以某种方式包含在内。但我不知道怎么做。
  • 我无法理解您面临的问题!如果通过上述方案,你可以与服务端api通信并得到JSON响应,那么你应该按照服务端的说明使用api方法。
  • 根据文档上的例子,数据末尾应该有&amp;code=THE_AUTHORIZATION_CODE。但我不知道如何在 python/django 中正确格式化。
  • 将其作为另一个数据传递。 data={'grant_type': 'sth1', 'code':'sth2'}
猜你喜欢
  • 2017-06-18
  • 1970-01-01
  • 2020-10-17
  • 1970-01-01
  • 2017-07-21
  • 2020-09-25
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
相关资源
最近更新 更多