Медиаизображение Django не отображается в шаблоне, но к нему можно получить доступ через .../media/thumbnail/image.png
Хотя контекст отображается в html, я могу использовать другие переменные, но не могу получить доступ к изображению. Мой код таков:
html:
{% for a in Manga %}
<div class="manga_container">
<div class="manga_image">
<p>{{a.manga_image}}</p>
<img src="{{ x.manga_image.url }}" alt="">
</div>
</div>
{%endfor%}
модель:
class Manga(models.Model):
manga_name = models.CharField(max_length= 255, default="null")
manga_image = models.ImageField(upload_to="thumbnail", default="thumbnail/noimage.png")
def __str__(self):
return f"{self.id}, {self.manga_name}"
и, наконец, просмотр:
def Index(request):
manga = Manga.objects.all().values()
chapter = Chapter.objects.all().values()
fansub = Fansub.objects.all().values()
context= {
"Manga": manga,
"Chapter": chapter,
"Fansub": fansub,
}
template = loader.get_template("Index.html")
return HttpResponse(template.render(context, request))
Я использовал представления на основе функций, поскольку мне приходится иметь дело с несколькими моделями одновременно.
мои медиа и url следующие:
import os
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
urlpatterns = [
...
...
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Я поместил этот тег p, чтобы увидеть его url и, как вы можете видеть, он был в правильном месте, когда я перехожу к 127.0.0.1:8000/media/thumbnail/noimage.png я могу видеть его и он действительно появляется на моем экране. Я пробовал большинство способов, которые я мог придумать. Я хочу видеть изображение на моем html и я ничего не трогал, так что это изображение по умолчанию, как я его настроил.
Вместо manga = Manga.objects.all().values()
используйте manga = Manga.objects.all()