Сервер разработки Django периодически не может обслуживать статические файлы
В моей среде разработки периодически возникают сбои при обслуживании статических файлов (js scripts и css). В консоли ошибок в Chrome я получаю 404s. Но если я обновлю эти элементы или сразу зайду по URL-адресам, они будут в порядке.
Это раздражает.
Пример:
GET http://127.0.0.1:8000/static/js/editor/xyz.js?v=1 404 (NOT FOUND)
но если я захожу на этот URL-адрес напрямую И если я обновлю страницу несколько раз, она снова заработает.
Есть идеи?
Хром 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 ответа
Сервер dev является однопоточным, поэтому, если что-то продолжает ждать, он блокирует каждый запрос.
Обычно я работаю с многопоточным сервером devjango concurent dev, который работает намного лучше. Также это очень быстро и легко настроить;)
Это может зависеть от вашей настройки. что ты сделал для статики? какие настройки? ты делал сбор статики? попробуйте это в случае
Тем не менее, об обслуживании статических файлов в разработке:
Предупреждение Это будет работать, только если DEBUG имеет значение True.
Это потому, что эта точка зрения крайне неэффективна и, вероятно, небезопасна. Это предназначено только для местного развития и никогда не должно использоваться в производстве.
Вы не можете просто предоставить статические файлы на другом сервере?
После прочтения всех ответов, если у кого-то еще возникла эта проблема, то... Согласно природе 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
,
Надеюсь это поможет.