Неправильно Конфигурировано в/Пустой статический префикс не разрешен - Django

Я работаю над загрузкой/отображением изображений с помощью Django.

Веб-сайт размещен на Heroku.

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

Однако изображения не отображались в шаблоне.

Затем я узнал, что мой urls.py должен иметь эту строку в конце:

+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Я добавил это к концу моего urls.py, но теперь я получаю эту ошибку:

ImproperlyConfigured at / Empty static prefix not permitted

У меня есть MEDIA_URL и MEDIA_ROOT в моих settings.py, и ни один из них не пуст.

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://example.com/media/", "http://media.example.com/"
MEDIA_URL = '/media/'

Почему эта ошибка происходит и как я могу ее исправить?

Здесь я думаю, что это важная часть моего urls.py:

from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
import notifications
admin.autodiscover()
urlpatterns = patterns('',
 ....urls......
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
3 ответа

Я добавил ту же строку в свой urls.py и получил ту же ошибку, что и вы.

+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Документация здесь говорит использовать settings.STATIC_URL и settings.STATIC_ROOT

Я изменил его на версию документации

urlpatterns = patterns('',
 ....urls......
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

и ошибка исчезла!

Я проверил свой файл настроек и убедился, что settings.MEDIA_URL и settings.MEDIA_ROOT были определены правильно. Позже я скорректировал urls.py с помощью settings.MEDIA_URL и settings.MEDIA_ROOT. Все работало, как ожидалось.

Это соответствующие части моего файла settings.py:

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
REPOSITORY_ROOT = os.path.dirname(BASE_DIR)
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(REPOSITORY_ROOT, 'static/')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(REPOSITORY_ROOT, 'media/')

Я думаю, что MEDIA_URL был установлен неправильно


Вы также проверяете как MEDIA_URL, так и MEDIA_ROOT, а также для статических файлов STATIC_ROOT STATIC_URL определены правильно.

Также проверьте правильность написания:)

Если один из них сконфигурирован с ошибкой, это вызовет эту ошибку.


На всякий случай у вас есть эта проблема, убедитесь, что у вас установлены как MEDIA_URL, так и MEDIA_ROOT.

Я получал ошибку

ImproperlyConfigured at / Empty static prefix not permitted

когда у меня был только MEDIA_ROOT, установленный в django 1.11

В качестве альтернативы django project wiki говорит, что он не может ссылаться на URL-адрес в режиме отладки: https://docs.djangoproject.com/en/1.11/howto/static-files/#serving-files-uploaded-by-a-user-during-development

licensed under cc by-sa 3.0 with attribution.