【发布时间】:2016-11-08 09:23:02
【问题描述】:
在我的 Django 项目中,我需要在我的视图中获取/发布一些数据到第三方 url,并重定向到它提供的网页。例如,我可以简单地做类似
class TestView(TemplateView):
def get(self, request, *args, **kwargs):
data = {
'order_id': 88888,
'subject': 'haha',
'rn_check': 'F',
'app_pay': 'T',
}
url = 'http://some-third-party-api-url?order_id=88888&subject=haha&...'
return HttpResponseRedirect(url)
但是我想将此第三方 api 用作包装的 SDK,例如
class TestView(TemplateView):
def get(self, request, *args, **kwargs):
from sucre.alipay_sdk.base import Alipay
from sucre.alipay_sdk import alipay_config
from django.http import HttpResponse
alipay = Alipay(alipay_config)
data = {
'order_id': 88888,
'subject': 'haha',
'rn_check': 'F',
'app_pay': 'T',
}
'''alipay api is wrapped in a sdk'''
'''and return a requests.models.Response instance'''
result = alipay.api('pay', data)
return HttpResponse(result)
和api代码:
def api(self, service, data):
''' some logics here '''
import requests
response = requests.get(url, data=data)
return response
但似乎 HttpResponse(result) 不是将 requests.models.Response 实例转换为 HttpResponse 的正确方法...布局不好,还有一些编码问题等...有没有正确的转换方法请求响应 Django HttpResponse?
更新:
HttpResponse(result) 工作,但页面的一些 css 丢失了。这可能与使用请求有关。
【问题讨论】:
-
请看mcve。
-
感谢@Olian04 的建议。 (因为这是我第一次使用 stackoverflow 来提问)但是完成的代码太长了,而且与问题本身无关——从请求响应到 HttpResponse 的转换..
标签: python django python-requests response httpresponse