我想使用请求库从 Django TemplateView 进行多个内部 REST API 调用。现在我也想将会话从模板视图传递到 api 调用。考虑到性能,推荐的方法是什么?
现在我正在提取cookie
从目前的request
模板视图中的对象,并将其传递给requests.get()
or requests.post()
称呼。但问题是,我必须通过request
反对我的 API 客户端,这是我不想要的。
这是我用来路由请求的当前包装器:
def wrap_internal_api_call(request, requests_api, uri, data=None, params=None, cookies=None, is_json=False, files=None):
headers = {'referer': request.META.get('HTTP_REFERER')}
logger.debug('Request API: %s calling URL: %s', requests_api, uri)
logger.debug('Referer header sent with requests: %s', headers['referer'])
if cookies:
csrf_token = cookies.get('csrftoken', None)
else:
csrf_token = request.COOKIES.get('csrftoken', None)
if csrf_token:
headers['X-CSRFToken'] = csrf_token
if data:
if is_json:
return requests_api(uri, json=data, params=params, cookies=cookies if cookies else request.COOKIES, headers=headers)
elif not files:
return requests_api(uri, data=data, params=params, cookies=cookies if cookies else request.COOKIES, headers=headers)
else:
return requests_api(uri, data=data, files=files, params=params, cookies=cookies if cookies else request.COOKIES,
headers=headers)
else:
return requests_api(uri, params=params, cookies=cookies if cookies else request.COOKIES, headers=headers)
基本上我想摆脱它request
参数(第一个参数),因为要调用它我必须继续传递request
对象从 TemplateViews 到内部服务。另外,如何在多个调用之间保持持久连接?