我刚刚开始学习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则不会 - 如果它根本加载了页面。
发生了什么事?我在这里失去了理智......
答案 0 :(得分:3)
可能与此问题有关: https://code.djangoproject.com/ticket/16099
本质上,开发服务器不是多线程的,如果浏览器打开连接,然后尝试第二个连接实际获取数据,它可以永久挂起。
编辑:
另外,请看这个问题: https://code.djangoproject.com/ticket/15178
如果您可以提供重现问题的方法,我们可以找到解决方法。
此外,如果您可以尝试最新的开发版本并查看是否修复了它,我们最近提交了一个新的补丁,它为runserver命令添加了多线程功能。
答案 1 :(得分:0)
我不确定你是否和我有同样的问题。但是我也在IE9上遇到了同样的白页,显然它是由html标签“fieldset”引起的,隐藏了我的表格。
尝试验证您的html代码或检查html标记与IE9的兼容性。希望它有所帮助。
答案 2 :(得分:0)
我正在使用Windows 7,64bit,django 1.3,py 2.6进行开发,我总是在IE,Firefox,Safari和Chrome中检查Dev服务器的功能。我的最新系统上有IE9,我的旧系统有IE8。我也注意到悬挂的问题。我发现当我使用127.0.0.1:8000时,它会挂起并刷新以使其工作。如果我使用我的开发服务器的特定IP地址启动开发服务器,问题似乎就消失了。例如python manage.py runserver 192.168.1.134:8000
似乎是IE9非常具体的东西。如果你谷歌它更多的人已经看到这个问题。
答案 3 :(得分:0)
我也有这个问题,这个解决方法做了修复。仅适用于django< = 1.3
http://nedbatchelder.com/blog/201103/quick_and_dirty_multithreaded_django_dev_server.html
@Andrew Barber
的修改
总结/我是怎么做到的:
创建一个名为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(或您使用的任何端口)启动您的开发服务器
享受:)
答案 4 :(得分:0)
有时,当您有不寻常的代码(例如我在HttpResponse之前有一行从用户那里获取输入)时,就会发生这种情况。删除该代码并刷新服务器。它将像魅力一样工作。