Сервер разработки 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,

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

Другие вопросы по тегам