Django:IE不加载localhost或加载非常缓慢

时间:2011-05-18 14:45:21

标签: django performance internet-explorer loading

我刚刚开始学习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则不会 - 如果它根本加载了页面。

发生了什么事?我在这里失去了理智......

5 个答案:

答案 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之前有一行从用户那里获取输入)时,就会发生这种情况。删除该代码并刷新服务器。它将像魅力一样工作。

相关问题