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 设置为默认格式,例如在您的 Resource 中,您可以重载以下方法:

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