Django:通过视图而不是Postman调用RESTAPI
我的桌面上有一个可以正常工作的python代码,可以完美地打印和制作PDF。我所要做的就是使用该代码并使用Django允许用户输入一个值 我的代码使用Django:通过视图而不是Postman调用RESTAPI,django,Django,我的桌面上有一个可以正常工作的python代码,可以完美地打印和制作PDF。我所要做的就是使用该代码并使用Django允许用户输入一个值 我的代码使用docusignAPI调用数据。我使用postman,它需要一个键和其他参数来使用API。我的用户输入的值将决定他们获得的数据 我想我要做的是重写我的代码,把它放在某个地方,然后把它变成一个视图。视图将被发送到模板 编辑- 我的代码: # Get Envelope Data- use account ID from above # Get Toda
docusign
API调用数据。我使用postman
,它需要一个键和其他参数来使用API。我的用户输入的值将决定他们获得的数据
我想我要做的是重写我的代码,把它放在某个地方,然后把它变成一个视图。视图将被发送到模板
编辑-
我的代码:
# Get Envelope Data- use account ID from above
# Get Todays Date, Daily Setting
day = datetime.datetime.today().strftime('%Y-%m-%d')
url = "https://demo.docusign.net/restapi/v2/accounts/" + accountId + "/envelopes"
# if Envelope is completed
querystring = {"from_date": Date, "status": "completed"}
headers = {
'X-DocuSign-Authentication': "{\"Username\":\""+ email +"\",\"Password\":\""+Password+"\",\"IntegratorKey\": \""+IntegratorKey+"\"}",
'Content-Type': "application/json",
'Cache-Control': "no-cache",
'Postman-Token': "e53ceaba-512d-467b-9f95-1b89f6f65211"
}
response = requests.request("GET", url, headers=headers, params=querystring)
envelopes = response.text
对不起,让我再试一次。目前我的桌面上有一个python3
程序。我用空闲运行它,一切都是我想要的
我想用Django做的是使用此代码在网页上打印其输出,并让用户下载其附加的csv
文件输出。我已经成功地创建了一个Django本地主机,我被困在了这一点上。我不知道如何使用我的python3
代码运行到网页
代码由API调用组成,我使用postman来帮助我发送正确的参数。我将添加代码的图片。我只想让用户输入值,例如accountID
,这样API就可以完成请求并为他们自己的请求提供数据。我将尝试向您概述如何使用Django
您可以有一个帐户来获取用户帐户\u id
class AccountForm(forms.Form):
account_id = forms.IntegerField()
您可以通过泛型显示此表单(另请参见):
我没有在这里显示模板account.html
。你必须自己去弄清楚这一点;我提供的链接应该为您指明正确的方向
现在,尚待确定的是方法form\u valid
应该返回什么。我展示的代码在上下文中呈现一个带有API调用响应的模板,因此在模板result.html
中,您可以以任何方式显示结果数据
您还提到下载CSV文件。这可能是一个不同的视图,可能是由result.html
中的链接或按钮触发的。你必须更具体地回答问题才能寻求帮助。对不起,我编辑了我的帖子,idk为什么我的示例代码中的日期很大,但这并不重要。非常感谢你编辑我的问题并回答。你所做的足以让我走向正确的方向。我已经阅读了链接,但我需要再重新阅读几次才能完全理解它。我的代码还使用json.loads和json.dumps来解析响应。你建议把它放在“ctx”部分之前吗。我还看到有人在settings.py中隐藏了api的键。你会这样做吗?@B.D将你的URL(demo.docusign.net
)和api键放在settings.py
中是一种很好的做法,将所有配置放在一个地方,以防你在某个时候不得不修改/更新这些键。这还允许您在多个视图中使用键,而无需写两次。@B.D是的,最好在视图中使用'result':json.load(resp.text)
,以便将dict传递到模板result.html
。这使你在模板中变得更容易。谢谢你,我会尝试一下,希望能很快让它工作起来。我有很多东西要学
class AccountView(views.FormView):
form_class = AccountForm
template_name = 'account.html'
def form_valid(self, form):
# here you make your request to the external API
account_id = form.cleaned_data['account_id']
url = "https://demo.docusign.net/restapi/v2/accounts/" + account_id + "/envelopes"
headers = ...
querystring = ...
resp = requests.request("GET", url, headers=headers, params=querystring)
ctx = {
'result': resp.text,
}
return render(self.request, 'result.html', ctx)