Как показать изображение на сайте с помощью django
Я попытался показать изображение в моем веб-сайте, которое я загрузил из панели администратора вручную с помощью django
Я ожидал увидеть свое изображение на сайте, но вместо этого он показал только маленькую иконку img, а когда я отладил статику в urls.py, она вернула мне 'Not Found: /events/event_pictures/7.png' input
связанный класс модели моего файла models.py
class Event_Model(models.Model):
name = models.CharField(max_length=200)
explanation = models.TextField(default="")
link = models.CharField(max_length=300, default="")
price = models.DecimalField(decimal_places=2, default=0.00, max_digits=10)
stock = models.IntegerField(default=-1)
release_date = models.DateField()
end_date = models.DateField()
image = models.ImageField(default="default.jpg", upload_to="event_pictures")
is_avaible = models.BooleanField(default=True)
# Form Attrs
form_id = models.ForeignKey(Form_Model, on_delete=models.CASCADE)
form_title = models.CharField(max_length=200)
form_explanation = models.TextField(default="")
файл urls.py проекта
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path("admin/", admin.site.urls),
path("", include("User_App.urls")),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
код файла urls.py проекта, когда я использовал его для отладки
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path("admin/", admin.site.urls),
path("", include("User_App.urls")),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_ROOT, document_root=settings.MEDIA_ROOT)
файл urls.py приложения
from django.urls import path
from .views import FormView, CreateFormView, MainPage, EventsPage
urlpatterns = [
path("", MainPage, name="index"),
path("form/", FormView, name="form"),
path("create/", CreateFormView, name="create-form"),
path("events/", EventsPage, name="events")
]
файл settings.py
MEDIA_ROOT = os.path.join(BASE_DIR,'pictures')
MEDIA_URL = '/pictures/'
связанный html-файл
{% extends 'base.html' %}
{% load static %}
{% block body %}
{% for event in events %}
<div class="card mb-4 mt-5">
<div class="row g-0">
<div class="col-md-4">
<img class="img-fluid rounded-start" src="{{ event.image }}">
</div>
<div class="col-md-8">
<div class="card-body">
<h3 class="card-title">
{{ event.name }}
</h3>
<p class="card-text">
{{ event.explanation }}
</p>
<p>
<b>
ücret: {{ event.price }}tl
</b>
</p>
</div>
<div class="card-footer ">
<span class="text-left">
son başvuru tarihi: {{ event.end_date }}
</span>
<span style="margin-left:400px">
{{ event.stock }} adet kaldı
</span>
</div>
</div>
</div>
</div>
{% endfor %}
{% endblock %}
Примечание: Я вижу папку pictures внутри папки Web_Project и внутри этой папки pictures я также вижу папку event_pictures и там есть правильный png файл внутри папки event_pictures
Вы можете показать изображение с помощью {{ event.image.url }}
в вашем шаблоне django вместо {{ event.image }}