如何使用 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方法。 根据文档上的例子,数据末尾应该有&amp;code=THE_AUTHORIZATION_CODE。但我不知道如何在 python/django 中正确格式化。 将其作为另一个数据传递。 data='grant_type': 'sth1', 'code':'sth2'

以上是关于如何使用 Django 从 POST 表单中获取 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的 html 表单获取 post id 到 views.py

从 django 中的发布请求中获取数据非表单数据 [关闭]

如何从 django 中的用户模型中获取 id

Django如何从ModelForm获取记录ID

如何在 django 1.3 中获取 POST 数据

如何使用无效标识符作为 django 表单字段名称