1

我正在尝试组织我的 django 应用程序返回的错误消息,并且遇到内容为空的 HttpResponseBadRequest 对象的子类的问题:

在views.py中:

class HttpNoContentAvailable(django.http.HttpResponseBadRequest):
    content = "Must add content before making this request."

def get_content(request, project_id):
    project = Project.objects.get(pk=project_id)
    if not project.has_content():
        return HttpNoContentAvailable()
    ...

它的工作原理如下:

def get_content(request, project_id):
    project = Project.objects.get(pk=project_id)
    if not project.has_content():
        return HttpNoContentAvailable("Must add content before making this request.")
    ...

在我的应用程序中,有很多视图需要根据是否有内容返回相同的 400 响应,我想将响应内容存储在一个地方。为了让事情变得更“有趣”,我在开发服务器上运行的单元测试通过了——我得到了包含正确内容的 HTTP 400 响应,但是在生产环境中运行时,我得到了没有内容的 HTTP 400 响应。

如何获得 HTTP 400 响应以获取正确的内容?(或者,更一般地说,您建议我如何组织代码以实现仅将响应内容存储一次的目标?)

4

1 回答 1

2

您应该覆盖子类中的构造函数,而不是将内容定义为类变量。

例如:

 def __init__(self):
         super(django.http.HttpResponseBadRequest, self).__init__("Must add content before making this request.")
于 2012-06-04T20:30:45.813 回答