如何使用 Django 从 POST 表单中获取 JSON 响应
Posted
技术标签:
【中文标题】如何使用 Django 从 POST 表单中获取 JSON 响应【英文标题】:How to get a JSON response from a POST form using Django 【发布时间】:2016-04-06 16:37:17 【问题描述】:我正在尝试使用zermelo 的API。 我正在使用此表单的“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 文件中的代码,但是
-
JSON 在用户面前打开。
我不知道如何“保存” JSON 文件并将代码更改为 var。
【问题讨论】:
如果你想在服务器端获取令牌,你应该在 python 文件中发出 post 请求,如果你应该在客户端获取它,你可以发出 ajax post 请求并然后将其发送回服务器! 我想让它在服务器端,但是我如何在 python 文件中发出这种请求? 【参考方案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方法。
根据文档上的例子,数据末尾应该有&code=THE_AUTHORIZATION_CODE
。但我不知道如何在 python/django 中正确格式化。
将其作为另一个数据传递。 data='grant_type': 'sth1', 'code':'sth2'
以上是关于如何使用 Django 从 POST 表单中获取 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章
如何从我的 html 表单获取 post id 到 views.py