Я пытаюсь загрузить изображение через администратора Django, а затем просмотреть это изображение на странице веб-интерфейса или просто через URL-адрес.
Обратите внимание, это все на моей локальной машине.
Мои настройки следующие:
MEDIA_ROOT = '/home/dan/mysite/media/'
MEDIA_URL = '/media/'
Я установил для параметра upload_to значение «images», и файл был правильно загружен в каталог:
'/home/dan/mysite/media/images/myimage.png'
Однако, когда я пытаюсь получить доступ к изображению по следующему URL:
http://127.0.0.1:8000/media/images/myimage.png
Я получаю ошибку 404.
Нужно ли настраивать определенные шаблоны URLconf для загружаемых медиафайлов?
Любой совет приветствуется.
Спасибо.
^
знак раньшеmedia//(?P<path>.*)$
, иногда, когда мы обращаемся к медиа-файлу в пути к URL-адресу приложения (напримерhttp://127.0.0.1:8000/myapp/media/img/logo.png
), это обычное не математика.Пожалуйста, внимательно прочитайте официальный Django DOC, и вы найдете наиболее подходящий ответ.
Лучший и простой способ решить эту проблему, как показано ниже.
источник
if settings.DEV
проверки, потому что он отключен автоматически?Для Django 1.9 вам необходимо добавить следующий код согласно документации:
Для получения дополнительной информации вы можете обратиться сюда: https://docs.djangoproject.com/en/1.9/howto/static-files/#serving-files-uploaded-by-a-user-during-development
источник
Вот что я сделал в Django 2.0. Установите сначала MEDIA_ROOT в MEDIA_URL в
setting.py
Затем включите
media
context_processors
вTEMPLATE_CONTEXT_PROCESSORS
путем добавленияВаш
media context processor
включен, теперь каждыйRequestContext
будет содержать переменнуюMEDIA_URL
.Теперь вы можете получить доступ к этому в вашем
template_name.html
источник
Да. Для разработки это так же просто, как добавить это в ваш URLconf:
Тем не менее, для производства вам понадобится предоставить мультимедиа, используя Apache, lighttpd, nginx или предпочитаемый вами веб-сервер.
источник
(по крайней мере) для Django 1.8:
Если вы используете
как описано выше, убедитесь, что в urlpatterns = [] нет шаблона «перехватить все» URL, указывающего на представление по умолчанию. Так как .append поместит добавленную схему в конец списка, она, конечно, будет проверена только в том случае, если не найден предыдущий шаблон URL. Вы можете избежать этого, используя что-то вроде этого, где шаблон URL «catch all» добавляется в самом конце, независимо от оператора if:
источник
Вот изменения, которые я должен был сделать, чтобы доставить PDF для django-публикаций. приложения , используя Django 1.10.6:
Использовали те же определения для медиа-каталогов, что и вы, в
settings.py
:Как предоставлено @thisisashwanipandey, в основном проекте
urls.py
:и изменение ответа, предоставленного @ r-allela, в
settings.py
:источник
Другая проблема, с которой вы можете столкнуться после настройки всех шаблонов URLconf, заключается в том, что переменная
{{ MEDIA_URL }}
не будет работать в ваших шаблонах. Чтобы это исправить, в файле settings.py обязательно добавьтев вашем
TEMPLATE_CONTEXT_PROCESSORS
.источник
Добавляем к Мике Каррику ответ для Джанго 1.8:
источник
TypeError: view must be a callable or a list/tuple in the case of include().
,Это то, что я сделал, чтобы добиться рендеринга изображений в режиме DEBUG = False в Python 3.6 с Django 1.11.
источник
Выполните шаги, указанные выше для => 3.0 для режима отладки
А также та часть, которая меня поразила , вышеуказанный статический URL работал только в моем основном файле проекта urls.py.Сначала я пытался добавить в свое приложение и удивлялся, почему я не вижу изображения.
Наконец убедитесь, что вы установили следующее:
источник
Это если для Джанго 1.10:
источник
С твоими настройками все в порядке. Некоторые веб-серверы требуют указывать файлы мультимедиа и статических папок специально. Например, на pythonanywhere.com вы должны перейти в раздел «Интернет» и добавить URL-адрес папок мультимедиа и статической папки. Например:
Я знаю, что уже поздно, но просто, чтобы помочь тем, кто посещает эту ссылку из-за той же проблемы;)
источник