【问题标题】:Django Class view didn't return an HttpResponse object. It returned None insteadDjango 类视图没有返回 HttpResponse 对象。它返回 None 而不是
【发布时间】:2015-06-26 23:40:57
【问题描述】:

urls.py

from housepost.views import ListingPost
...
url(r'^house_post/$', ListingPost.as_view(), name='post_house'),
...

views.py

from django.http import HttpResponse
from django.contrib import messages
from django.views.generic import View
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator

class ListingPost(View):

    def get(self, request, *args, **kwargs):
        messages.error(request, 'asdf', extra_tags = 'error')
        return HttpResponse('Hi')

    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        super(ListingPost, self).dispatch(*args, **kwargs)

我在获取请求时返回了一个 HttpResponse,但我不断收到错误消息:

错误信息

view housepost.views.ListingPost 没有返回 HttpResponse 对象。它返回 None 。

我哪里出错了?

【问题讨论】:

  • 对不起,我忽略了发布它。但它就在那里。
  • 您是否正在实施其他类似dispatch 的东西?
  • @JuniorCompressor 是的,我是。
  • 是登录的用户,在这种情况下。你已经放置了一个装饰器来检查它。
  • @user2190496 对于您的下一个问题...您看到省略相关信息是一件坏事

标签: python django


【解决方案1】:

dispatch 返回一个HttpResponse,但是当你覆盖它时你不会返回任何东西。这是调用getpost 并代表它们返回响应的方法。所以以下应该工作:

def dispatch(self, *args, **kwargs):
    return super(ListingPost, self).dispatch(*args, **kwargs)

【讨论】:

    【解决方案2】:

    你的 dispatch 方法需要实际返回调用超类方法的结果:

    return super(ListingPost, self).dispatch(*args, **kwargs)
    

    【讨论】:

      猜你喜欢
      • 2017-01-25
      • 2018-09-14
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      相关资源
      最近更新 更多