1

代わりに、すべてのリクエストで返されるメタ情報を 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']

すでに似たようなことをした人からの提案はありますか?

4

2 に答える 2

1

誰かが同じことを必要とする場合に備えて、これが私がそれを機能させることができた方法です... GregMに感謝します。

Tastypie ModelResource を継承するクラスを作成し、それを調整しました。次に、すべてのリソースが代わりにクラスを使用します。

彼のコードから、いくつかの試行を追加する必要がありました。ただし、単一のアイテムを取得すると、たとえば .../api/v1/user/2/ メタが存在せず、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 の功績を認めていただき、ありがとうございます。

于 2013-08-20T01:06:20.477 に答える