Я работаю над этим проектом django, где после загрузки изображений на носитель через панель администратора я не смог получить ни одного изображения на выходе, хотя отображается его альтернативный текст. Вот код, который может помочь вам вызвать проблему.
проект/settings.py
BASE_DIR = Path(__file__).resolve().parent.parent
MEDIA_URL = '/media/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
# Create the 'static' directory if it doesn't exist
os.makedirs(os.path.join(BASE_DIR, 'static'), exist_ok=True)
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
проект/urls.py
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
else:
urlpatterns += staticfiles_urlpatterns()
модели.py
posterImage = models.ImageField(upload_to='poster/', blank=True, null=True)
приложение/urls.py
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
view.py
movies = Movie.objects.all()
return render(request, 'movie.html', {'movies': movies})
фильм.html
{% for movie in movies %}
<div class = "carousel-item">
<img src = "{{ movie.image.url }}" class = "d-block w-100" alt = "{{ movie.title }}">
<div class = "carousel-caption">
<h5>{{ movie.title }}</h5>
</div>
</div>
{% endfor %}
Я надеюсь получить изображение после того, как загрузил изображение в панели администратора, используя
{{movie.image.url}}
#проверьте, что «djano.contrib.staticfiles» включен в ваши «INSTALLED_APPS» в «settings.py»
INSTALLED_APPS = [
'django.contrib.staticfiles',
#other apps
]
Кажется, перед объявлением переменной staticfiles есть тип. Я только новичок в Django, надеюсь, это поможет
спасибо, но это была просто ошибка при публикации проблемы. если бы это было проблемой, я бы знал. Спасибо
<img src = "{{ movie.image.url }}" class = "d-block w-100" alt = "{{ movie.title }}">
измените это на
<img src = "{{ movie.posterImage.url }}" class = "d-block w-100" alt = "{{ movie.title }}">
поскольку у вас есть поле с именем posterImage
и вы ссылаетесь на него через image.url
большое спасибо, я применил ваше предложение: просто замените этот MEDIA_URL = '/media/' STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] # Создайте "статический" каталог, если он не существует os.makedirs( os.path.join(BASE_DIR, 'static'), Exist_ok=True) MEDIA_ROOT = os.path.join(BASE_DIR, 'media') с этим STATIC_URL = 'static/' STATIC_DIR = BASE_DIR / 'static' MEDIA_URL = '/ media/' MEDIA_ROOT = BASE_DIR/'media': и это работает нормально
«django.controb.staticfiles» уже настроен django, что не очень полезно.