#django #image #django-templates #django-settings
#django #изображение #django-шаблоны #django-настройки
Вопрос:
Статические изображения отображаются правильно. Файлы в папке мультимедиа не отображаются html
. Я пытался настроить media_url различными способами, но тщетно. Я загрузил изображение через панель администратора django. Название продукта отображается нормально. img.url показывает /media/p2.jpg
models.py
class Product(models.Model):
name = CharField(("Name"),max_length=256,blank=False)
title_img = models.ImageField(null=True, blank=True)
settings.py
PROJECT_ROOT = (os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(PROJECT_ROOT), "media_root")
urls.py
urlpatterns = [
path('', ProductList.as_view() , name="product"),
] static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
template.html
{{p.name}}
<img src="{{p.title_img.url}}">
имя отображается, пока изображение не отображается. В консоли я получаю
"GET /media/p2.jpg HTTP/1.1" 404 2690
Ответ №1:
Я изменил некоторые настройки и смог их устранить. Вероятно, ошибка заключалась в том, что я менял project_root/products/urls.py
вместо или project_root/urls.py
. Общие изменения, которые я сделал:
В основном urls.py , добавил эти
urlpatterns = [
path('', ProductList.as_view() , name="product"),
] static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Изменено settings.py
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media/')
MEDIA_URL = '/media/'
Ответ №2:
Согласно документации: https://docs.djangoproject.com/en/3.1/howto/static-files/#serving-static-files-during-development и https://docs.djangoproject.com/en/3.1/howto/static-files/#serving-files-uploaded-by-a-user-during-development
- его следует использовать только для целей разработки,
- Настройки.Для отладки должно быть установлено значение True,
- это работает, только если URL-адрес является локальным
в вашем случае 1 и 3 швов в порядке, но установлен ли ваш параметр ОТЛАДКИ в True?
Согласно документации: https://docs.djangoproject.com/fr/3.1/ref/contrib/staticfiles/#runserver , вы можете запустить сервер с аргументом —insecure, чтобы вы все еще могли обслуживать статические файлы или медиафайлы с DEBUG, установленным в False.
Комментарии:
1. для отладки установлено значение true