有谁知道将每个请求返回的元信息移动到http标头的“最佳”方法是什么?
我打算做这样的事情:
def alter_list_data_to_serialize(self,request,data_dict):
if isinstance(data_dict,dict):
if 'meta' in data_dict:
# grab each property of the data_dict['meta']
#and put it on the request headers
if 'objects' in data_dict:
return data_dict['objects']
已经做过类似事情的人的任何建议?
答案 0 :(得分:1)
如果您的意思是将序列化数据tastypie中的元信息返回到响应的HTTP标头,我认为您需要覆盖create_reponse
方法。您没有alter_list_data_to_serialize
提供的HttpResponse对象。这样的事情应该让你开始:
def create_response(self, request, data, response_class=HttpResponse, **response_kwargs):
stripped_data = data.get('objects') or data
desired_format = self.determine_format(request)
serialized = self.serialize(request, stripped_data, desired_format)
response = response_class(content=serialized,
content_type=build_content_type(desired_format),
**response_kwargs)
# Convert meta data to HTTP Headers
for name, value in data.get('meta', {}).items():
response[name] = str(value)
return response
答案 1 :(得分:1)
如果有人需要相同的东西,这就是我能够让它运作的方式......感谢GregM。
我创建了一个继承自tastypie ModelResource的类,并对其进行了调整。然后,我的所有资源都使用我的课程。
从他的代码中,我只需要添加几个尝试,除非因为当你获得单个项目时。 ... / api / v1 / user / 2 / meta不存在,并且抛出了AttributeError异常。
然后,你应该好好去。
class MyModelResource(ModelResource):
def create_response(self, request, data, response_class=HttpResponse, **response_kwargs):
try:
stripped_data = data.get('objects')
except AttributeError:
stripped_data = data
desired_format = self.determine_format(request)
serialized = self.serialize(request, stripped_data, desired_format)
response = response_class(content=serialized,
content_type=build_content_type(desired_format),
**response_kwargs)
# Convert meta data to HTTP Headers
try:
for name, value in data.get('meta', {}).items():
response['Meta-' + name.title().replace('_','-')] = str(value)
except AttributeError:
response['Meta-Empty'] = True
return response
再次,Greg完全赞同,谢谢。