想使用混入創建在Django基於類的視圖,但不斷收到以下錯誤消息:Django的混入視圖不返回HttpResponse對象
ValueError: The view twitter.views.TwitterExampleView didn't return an HttpResponse object.
如以下代碼中所示,我從View擴展到創建應用的基礎TwitterView,以處理從Twitter返回的錯誤消息。該視圖進一步擴展了Twitter網絡連接到視圖的TwitterNetworkView。其他類允許對傳入請求的參數進行一些轉換。最後一個類TwitterExampleView包含用於參數轉換的mixin和TwitterNetworkView。它將get方法返回爲一個佔位符字符串「blah」。只有當它回到調度中時,纔會顯示響應,所以我忽略了什麼?
class TwitterView(View):
def dispatch(self, request, *args, **kwargs):
try:
response = super(TwitterView, self).dispatch(request, *args, **kwargs)
return render_response(request, response)
except TwitterApiException, e:
return return_error(request, e, e.status_code)
class TwitterNetworkView(TwitterView):
def dispatch(self, request, *args, **kwargs):
self.network = get_network_or_404(request.user, kwargs['network_id'])
super(TwitterNetworkView, self).dispatch(request, *args, **kwargs)
class DefineParamsMixin(object):
def get_params(self):
return null
class TwitterPagedDefineParams(DefineParamsMixin):
def get_params(self):
return define_params(
Param('page'),
Param('since'),
Param('before'),
Param('limit', transform_func=int)
)
class TwitterExampleView(TwitterPagedDefineParams, TwitterNetworkView):
def get(self, request, *args, **kwargs):
return "blahhhhh"
好吧,不知道我是否理解你的問題。但是,錯誤消息是有道理的。因爲你在.get()方法中返回了'blahhhh'。我的意思是,無論您如何構建視圖,django都期待HttpResponse對象。 – 2014-09-25 19:21:50
你的'render_response'和'return_error'調用返回什麼?除非我在繼承鏈中遺漏了某些東西,否則這些將準備最終的返回值。在你的'TwitterExampleView'情況下獲得'response =「blahhhhh」'。 – 2014-09-25 19:27:13
render_response - > return HttpResponse(data,content_type = content_type,status = status) – 2014-09-25 19:33:53