Django休息框架自定义装饰器覆盖post方法

时间:2016-01-22 10:25:08

标签: django python-2.7 django-rest-framework decorator

我的大多数ModelViewSet都有覆盖创建方法(创建对象时需要执行其他操作)。

class MyModelViewSet(serializers.ModelSerializer):
    def create(self, *args, **kwargs ):
        # some code
        return Response(
            serializer.data,
            status=status.HTTP_201_CREATED,
            headers=headers
        )

我还想为这些创建方法定义一个装饰器函数,例如:

def post_shower(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        result = func(*args, **kwargs)
        print result
        return result
    return wrapper

基本上我需要响应状态,标题,新对象数据。当我运行此代码时,我得到了

ContentNotRenderedError: The response content must be rendered before it can be accessed.

上的

print result

有关如何在装饰器中获取数据的任何建议? 感谢

1 个答案:

答案 0 :(得分:0)

通过response.data访问新对象数据,通过response.status_code访问状态。通过Response对象的类似dict的接口逐个访问头。或者通过response._headers非正式地一次性完成。