Сервер 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
.
Надеюсь, что это поможет.