Сервер Django dev прерывает работу статических файлов

В моей среде разработки я получаю прерывистые сбои для обслуживания статических файлов (js-скрипты и css). В консоли ошибок в Chrome я получаю 404. Но если я обновляю эти элементы или непосредственно просматриваю URL-адреса, они отлично отлаживаются.

Это раздражает.

Пример:

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

но если я нахожу этот URL прямо. И если я обновляю страницу несколько раз, она будет работать снова.

Любые идеи?

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

Ответы

Ответ 1

Сервер dev является однопоточным, поэтому, если что-то продолжает ждать, он блокирует каждый запрос.

Обычно я работаю с django concurent dev server, который многопоточен и работает намного лучше. Также он очень быстро и легко настраивается;)

Ответ 2

это может зависеть от вашей настройки. что вы сделали для статики? какие настройки? вы сделали сбор статического? попробуйте this в случае

однако, об обслуживании статических файлов в разработке:

Предупреждение Это будет работать, только если DEBUG имеет значение True.

Это потому, что это представление сильно неэффективно и, вероятно, небезопасно. Это предназначено только для локального развития и никогда не должно использоваться в производстве.

из здесь

Вы не можете просто поставить статические файлы на другом сервере?

Ответ 3

После прочтения всех ответов, если у кого-то есть такая проблема, тогда... По характеру 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.

Надеюсь, что это поможет.