gpt4 book ai didi

python - 将 requests.models.Response 转换为 Django HttpResponse

转载 作者:行者123 更新时间:2023-12-02 07:25:33 25 4
gpt4 key购买 nike

在我的 Django 项目中,我需要在我的 View 中获取/发布一些数据到第三方 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 丢失了。这可能与使用请求有关。

最佳答案

这应该有效:

from django.http import HttpResponse
import requests

requests_response = requests.get('/some-url/')

django_response = HttpResponse(
content=requests_response.content,
status=requests_response.status_code,
content_type=requests_response.headers['Content-Type']
)

return django_response

关于python - 将 requests.models.Response 转换为 Django HttpResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40483149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com