这恰好发生在我的一个网站上,我不知道是什么造成的 对于特定应用程序由mod_wsgi提供的任何URL都会发生这种情况,以前它可以正常工作。
settings.py
中的语法错误导致HTTP 500
<{1}}中的语法错误不会影响任何内容 - 似乎永远不会加载此文件。
有什么要检查的?
答案 0 :(得分:0)
罪魁祸首是这条线:
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中必须有一些魔力。