Отображать загруженные изображения в HTML - DJANGO - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь отобразить изображения, загруженные пользователем в мой HTML. Я бы установил следующее:

Настройки:

MEDIA_URL = '/media/'
MEDIAFILES_DIRS = []
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

Загрузка файлов внутри модели в каталог:

class Artikel(models.Model):
    artikel_pic = models.ImageField(upload_to='assortiment/images/', blank=True, verbose_name="Afbeelding")

urls:

urlpatterns = [
    path(r'', include('main.urls')),
    path(r'', include('assortiment.urls')),
    path('admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Views.py:

class AssortimentView(TemplateView):
    template_name = "assortiment/assortiment.html"

    def get(self, request):
        artikel = Artikel.objects.all()
        context_artikel = { 'artikel': artikel}
        return render (request, self.template_name, context_artikel)

URL-адрес, который дается при открытии изображения в панели администратора: http://127.0.0.1: 8000 / медиа / ассортимент / images / choco_i js .jpg Здесь отображается правильно.

html код, который должен отображать изображение:

    {% for art in artikel %}
      <div class="col-sm-2">
        <div class="card" >
          <img class="card-img-top" src="{{MEDIA_URL}}/images{{ artikel_pic.url }}" alt="{{art.artikel_naam}}">
          <div class="card-body">
            <h5>{{ art.artikel_naam }}</h5>
            <p class="card-text">{{ art.artikel_omschrijving }}</p>
          </div>
            <div class="row mr-auto">
                <div class="col-8">
                  <button type="submit" href="#" class="btn btn-info" id="button-assortiment-info">info </button>
                </div>
                <div class="col-4">
                  <button type="submit" href="#" class="btn btn-primary" id="button-assortiment-add">+</button>
                </div>
            </div>
        </div>
      </div>
    {% endfor %}

Я получаю ошибку not found (304): "GET / media / Ассортимент / images / choco_i js .jpg HTTP / 1.1 "304

Похоже, все идет хорошо. Не могу понять, что идет не так, хотя. Я попытался изменить sr c в файле html на:

<img class="card-img-top" src="{{ artikel_pic }}" alt="{{art.artikel_naam}}">
<img class="card-img-top" src="{{ artikel_pic.url }}" alt="{{art.artikel_naam}}">
<img class="card-img-top" src="/images/{{ artikel_pic.url }}" alt="{{art.artikel_naam}}">
<img class="card-img-top" src="{{MEDIA_URL}}{{ artikel_pic.url }}" alt="{{art.artikel_naam}}">

Кажется, что источник не направляет к правильному. У кого-нибудь есть предложения, как это правильно сделать?

1 Ответ

0 голосов
/ 03 мая 2020

добавьте эти строки в файл settings.py

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media/')

и используйте этот код в html файле

<img class="card-img-top" src="{{ art.artikel_pic.url }}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...