【问题标题】:Django serves zero byte responseDjango 提供零字节响应
【发布时间】:2011-12-13 15:44:52
【问题描述】:

这只是发生在我的一个网站上,我不知道是什么原因造成的。
mod_wsgi 为特定应用程序提供的任何 URL 都会发生这种情况,该应用程序过去可以正常工作。

settings.py 中的语法错误导致 HTTP 500。
urls.py 中的语法错误不会影响任何事情——似乎这个文件永远不会加载。

有什么要检查的?

【问题讨论】:

  • 您是否尝试使用开发服务器运行您的应用程序以查看所有设置是否正常以及是否出现任何错误? (当然,不要在端口 80 上这样做)。
  • @Thomas,发现 0 个错误。
  • 您的网络服务器似乎是 Apache,您检查 error.log 文件了吗?
  • 是的,我做到了。日志中没有错误,什么都没有。
  • 你重启了 Apache 吗? Apache 只会在重新启动时重新加载这些文件,而开发服务器会监视它们的更改。

标签: python django apache mod-wsgi


【解决方案1】:

罪魁祸首是这一行:

from django.contrib.auth.forms import AuthenticationForm

middleware.py.

将导入移动到使用AuthenticationForm 的函数中解决了这个问题:

from django.http import HttpResponseRedirect
from django.conf import settings
from django.contrib import messages
from django.contrib.auth import login
#from django.contrib.auth.forms import AuthenticationForm <-- THE LINE WAS HERE

class LoginFormMiddleware(object):
    def process_request(self, request):
        if request.method == 'POST' and 'is_top_login_form' in request.POST:
            from django.contrib.auth.forms import AuthenticationForm # <-- MOVED HERE

            form = AuthenticationForm(data=request.POST)
            is_valid = form.is_valid()

            if is_valid:
                login(request, form.get_user())

                program = request.user.get_profile().first_intern.program
                NavigationMiddleware.set_program(request, program)

                return HttpResponseRedirect('%s?quick' % program.get_absolute_url())

            else:
                messages.error(request, request.POST['username'], extra_tags='login')
                return HttpResponseRedirect(request.get_full_path())            

我仍然不知道为什么以前的代码可以正常工作,为什么突然崩溃以及为什么这样做可以解决问题。
毕竟,Python 中必须有一些魔法。

【讨论】:

  • settings.py 中是否对 MIDDLEWARE_CLASSES 设置进行了任何更改? django 文件不应该是罪魁祸首。中间件类对顺序非常挑剔。这是否被修改过?
  • 不,我没有更改MIDDLEWARE_CLASSES 的顺序,或者就此而言,没有更改settings.py。我可以通过删除对该导入的评论来重现该问题。
猜你喜欢
  • 1970-01-01
  • 2016-04-12
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
相关资源
最近更新 更多