3

別のビューで使用するタスティパイ レスポンスを取得しようとしています。クックブックでレシピを見ました。問題は、リストビューを取得したいということです。私の場合、/api/v1/source/. ここに私がこれまでに持っているものがあります:

sr = SourceResource()
objs = sr.get_object_list(request) # two objects returned
bun = sr.build_bundle(data=objs, request=request)

jsondata = sr.serialize(None, sr.full_dehydrate(bun), 'application/json')

もちろん、これはすべて崩壊します。bun.data必要な特性 (単一のオブジェクト) がありません。それで、誰かがこれを成功させましたか?それはどのように行われますか?

4

2 に答える 2

5

これが私が思いついたものです。リクエストとQueryDictの両方がコピーされるのは特に好きではありませんが、現時点では、おいしいコードの大部分をコピーする以外に何も考えられません。

from copy import copy

from django.views.generic import TemplateView

from incremental.sources.resources import SourceResource
resource = SourceResource()

class AppView(TemplateView):
    'Base view for the Source parts of the app'
    template_name = 'sources/base.html'

    def get_context_data(self, **data):
        'get context data'
        tmp_r = copy(self.request)
        tmp_r.GET = tmp_r.GET.copy()
        tmp_r.GET['format'] = 'json'

        data.update({
            'seed': resource.get_list(tmp_r).content
        })
        return data
于 2012-06-01T02:25:40.850 に答える
3

リクエストがコピーするのを避けるために、json をデフォルト形式として設定できます。たとえば、リソースで次のメソッドをオーバーロードできます。

SourceResource(Resource):
  def determine_format(self, request):
    return "application/json"
于 2012-11-24T14:39:32.450 に答える