我刚刚开始学习Django,在我的电脑上构建一个项目,运行Windows 7 64位,Python 2.7,Django 1.3。
基本上无论我写什么,它都会立即加载到Chrome和Firefox中。但是对于IE(版本9),它只是停在那里,什么也不做。我可以在IE上加载"http://127.0.0.1:8000"并使计算机打开数小时,但它无法加载。有时,当我刷新几次或重新启动IE时,它会起作用。如果我更改代码中的某些内容,Chrome 和 Firefox 会立即反映更改,而 IE 不会 - 如果它加载页面的话。
这是怎么回事?我在这里失去理智...
它可能与此问题有关:https://code.djangoproject.com/ticket/16099
从本质上讲,开发服务器不是多线程的,如果浏览器打开一个连接,然后尝试第二个连接来实际获取数据,它可能会永远挂起。
编辑:
另外,请参阅此问题:https://code.djangoproject.com/ticket/15178
如果您可以提供重现问题的方法,我们也许能够找到修复程序。
此外,如果您可以尝试最新的开发版本并查看是否可以修复它,我们最近提交了一个新的补丁,该补丁为 runserver 命令添加了多线程功能。
我不确定你是否有和我一样的问题。但是我也在IE9上遇到了相同的白页,显然这是由html标签"fieldset"隐藏我的表单引起的。
尝试验证您的 html 代码或检查 html 标记与 IE9 的兼容性。希望对您有所帮助。
我正在使用Windows 7,64位,django 1.3,py 2.6进行开发,并且我总是在IE,Firefox,Safari和Chrome中检查开发服务器的功能。我的最新系统有IE9,我的旧系统有IE8。我还注意到了悬挂问题。我发现当我使用 127.0.0.1:8000 时,它会挂起并刷新才能使其工作。如果我使用开发服务器的特定 IP 地址启动开发服务器,问题似乎消失了。例如 python manage.py runserver 192.168.1.134:8000
似乎确实是IE9非常具体的东西。 如果你谷歌它,更多的人已经看到了这个问题。
我也遇到了这个问题,此解决方法可以修复。 仅适用于 Django <= 1.3
http://nedbatchelder.com/blog/201103/quick_and_dirty_multithreaded_django_dev_server.html
@Andrew理发师
编辑总结/我是如何做到的:
创建名为 managec.py (C=并发)
的文件将以下代码粘贴到其中:
#!/usr/bin/env python
#
# A clone of manage.py, with multi-threadedness monkeypatched in.
import os, sys
from django.core.management import execute_manager
try:
import settings # Assumed to be in the same directory.
except ImportError:
sys.stderr.write(
"Error: Can't find the file 'settings.py' in the directory containing %r. "
"It appears you've customized things.n"
"You'll have to run django-admin.py, passing it your settings module.n"
"(If the file settings.py does indeed exist, it's causing an ImportError somehow.)n"
% __file__
)
sys.exit(1)
def monkey_patch_for_multi_threaded():
# This monkey-patches BaseHTTPServer to create a base HTTPServer class that
# supports multithreading
import BaseHTTPServer, SocketServer
OriginalHTTPServer = BaseHTTPServer.HTTPServer
class ThreadedHTTPServer(SocketServer.ThreadingMixIn, OriginalHTTPServer):
def __init__(self, server_address, RequestHandlerClass=None):
OriginalHTTPServer.__init__(self, server_address, RequestHandlerClass)
BaseHTTPServer.HTTPServer = ThreadedHTTPServer
if __name__ == "__main__":
monkey_patch_for_multi_threaded()
execute_manager(settings)
使用 ./managec.py RunServer 8080(或您使用
的任何端口)启动开发服务器享受:)
有时,当您有不寻常的代码时,就会发生这种情况,例如我在 HttpResponse 之前有一行从用户那里获取输入。删除该代码并刷新服务器。它会像魅力一样工作。