DRF:在自定义渲染器中获取请求对象

时间:2016-12-21 10:42:47

标签: django django-rest-framework renderer

我正在使用django == 1.10和djangorestframework == 3.4.6构建服务器端

我已经构建了一个JSONRenderer:

class CustomJSONRenderer(JSONRenderer):
     def render(self, data, accepted_media_type=None, renderer_context=None):
        meta_fields = ["temp_save", "subject", "visit"]
        a = {"fields": {}}
        for k in data:
            try:
                meta_fields.index(k)  # Crashes with ValueError if not found
                a[k] = data[k]
            except ValueError:
                a["fields"][k] = data[k]
        return super(CustomJSONRenderer, self).render(a, accepted_media_type, renderer_context)

问题:是否可以获取视图request对象?我特别想要访问urls参数(例如request.kwargs['pk']

1 个答案:

答案 0 :(得分:3)

您可以从以下renderer_context获取请求。

request = renderer_context['request']

您的代码:

class CustomJSONRenderer(JSONRenderer):
     def render(self, data, accepted_media_type=None, renderer_context=None):
        request = renderer_context['request'] or None
        meta_fields = ["temp_save", "subject", "visit"]
        a = {"fields": {}}
        for k in data:
            try:
                meta_fields.index(k)  # Crashes with ValueError if not found
                a[k] = data[k]
            except ValueError:
                a["fields"][k] = data[k]
        return super(CustomJSONRenderer, self).render(a, accepted_media_type, renderer_context)

可能会对你有帮助。