Django dev服务器间歇性地无法提供静态文件

时间:2011-10-10 20:12:16

标签: django django-dev-server

在我的开发环境中,我因服务静态文件(js脚本和css)而出现间歇性故障。在Chrome的错误控制台中,我获得了404s。但是,如果我刷新这些项目,或者直接访问这些网址,它们就可以正常使用。

这很烦人。

示例:

GET http://127.0.0.1:8000/static/js/editor/xyz.js?v=1 404 (NOT FOUND)

但如果我直接访问该网址就好了。如果我刷新页面几次,它将再次起作用。

有什么想法吗?

Chrome 14.0.835.202

Django==1.3
Fabric==1.0.1
Jinja2==2.5.5
PIL==1.1.7
Pygments==1.3.1
South==0.7.3
Sphinx==1.0.5
boto==2.0
chunks==0.1
django-devserver==0.2.1
django-pagination==1.0.7
django-sorting==0.1
django-storages==1.1.3
docutils==0.8
gunicorn==0.12.1
ipython==0.10.1
paramiko==1.7.6
pep8==0.6.1
psycopg2==2.2.2
pycrypto==2.0.1
python-dateutil==1.5
python-memcached==1.45
wsgiref==0.1.2

3 个答案:

答案 0 :(得分:2)

开发服务器是单线程的,所以如果有什么东西在等待,它会阻止每个请求。

我通常使用多线程的django concurent dev server并且工作得更好。它也非常快速且易于设置;)

答案 1 :(得分:-1)

可能取决于您的设置。 你为静电做了什么?设置是什么?你做收集静电吗? 如果

,请尝试this

但是,关于在开发中提供静态文件:

  

警告只有在DEBUG为True时才会有效。

     

那是因为这种观点非常低效且可能不安全。   这仅适用于本地开发,不应使用   在生产中。

来自here

你不能只在另一台服务器上提供静态文件吗?

答案 2 :(得分:-1)

如果仍然有人遇到这个问题,那么在阅读完所有答案之后...... 根据Django的性质,您不需要做任何事情来提供静态文件 只需你的设置文件应该具有如下正确的配置:

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    # **THIS IS USED WHEN YOUR STATIC FILES ARE IN SOME OTHER FOLDER ALSO**

    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.

    # Don't forget to use absolute paths, not relative paths.

    FOLDER_NAME, 
)

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

INSTALLED_APPS = (
    # other apps
    'django.contrib.staticfiles',
)

但是,如果你仍然遇到问题,请将其放入urls.py

(r'^(您的文件的路径)$','django.views.static.serve',{'document_root':'PROJECT_ROOT_DIR'+“静态文件夹的路径”}),

以上URL将用于静态文件,无论它们是JS文件还是CSS或图像。

如果是生产服务器,则不需要此。

然后运行:python manage.py collecstatic

希望这有帮助。