Неверный путь для моего приложения Django с изображением по умолчанию
Я делаю сайт музыкального стриминга на Django и хочу отображать плейлисты на главной странице. Все работает, кроме плейлистов, в которые я не загрузил изображение. Я установил изображение по умолчанию для плейлиста, но браузер не находит изображение по умолчанию из-за неправильного пути. Как я могу это исправить? (Возможно, это просто, но я новичок в Django...)
html:
{% for playlist in my_playlists %}
<a href="{% url 'music:playlist' playlist.playlist_id %}"><img src="{{ playlist.image.url}}" alt="playlist image"></a>
{% endfor %}
models.py:
class Playlist(models.Model):
playlist_id = models.AutoField(primary_key=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
playlist_name = models.CharField(max_length=50, default="name")
image = models.ImageField(upload_to="playlist_images/", validators=[FileExtensionValidator(allowed_extensions=['jpeg', 'jpg', 'png'])], default="images/music-placeholder.png")
plays = models.IntegerField(default=0)
songs = models.ManyToManyField(Song, related_name='playlist')
slug = models.SlugField()
views.py:
def homepage(request):
songs = Song.objects.all()
user = request.user
if user.is_authenticated:
my_playlists = Playlist.objects.filter(user=user)
return render(request, 'homepage.html', {'songs': songs, 'my_playlists': my_playlists})
setting.py:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
Я получил эту ошибку:
Not Found: /media/media/images/music-placeholder.png
но путь должен быть таким /media/images/music-placeholder.png:
Включили ли вы медиа-урл в корневой url conf?
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# your other urls here
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Также убедитесь, что вы установили MEDIA_URL
и MEDIA_ROOT
в файле настроек.
Обычно что-то вроде этого:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
Тогда, я думаю, вы сможете получить доступ к загруженным медиафайлам из шаблона с помощью <img src="media/image_path"/>
РЕДАКТИРОВАТЬ:
Если вы действительно пытаетесь показать static
изображение, убедитесь, что STATIC_URL
и STATIC_ROOT
установлены в настройках и включены в url conf. Затем вы можете использовать тег статического шаблона для отображения:
{% load static %}
...
<img src="{% static '<path_to_file>.jpg' %}" alt="My image">