2016-01-22 65 views
2

我的大多數ModelViewSet都有overriden創建方法(需要在創建對象時執行其他操作)。Django rest框架定製裝飾器覆蓋post方法

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 

有什麼建議? 謝謝

+0

也許你可以給出更多的細節,哪些片段實際上會拋出錯誤,第一或第二。在任何情況下,如果你的視圖返回一個'TemplateResponse',你應該手動調用'render()'來訪問它的內容,因爲它不會自動調用[請參閱手動調用基於類的通用視圖](http://stackoverflow.com /問題/ 7258912 /手動主叫一類基於泛型視圖) –

回答

0

通過response.data和狀態通過response.status_code訪問新的對象數據。通過響應對象的字典式界面逐個正式訪問標題。或非正式地通過response._headers