Django: Использование цикла for для просмотра всех изображений из моей базы данных - с помощью img src - PullRequest
0 голосов
/ 31 октября 2019

В настоящее время я изучаю Джанго и делаю свои первые шаги. Я пытаюсь создать веб-галерею, чтобы узнать все основные вещи. Я успешно отобразил некоторые изображения, используя статические файлы. Поэтому я попытался сохранить изображения через ImageFields и «upload_to» в моей БД, сохранив их в моем статическом каталоге. Я пытался отобразить каждого из них с помощью цикла for в теге. Мой img отображается правильно с использованием тега {% static%}, но когда я пытаюсь вставить тег {{}}, он не работает, хотя это тот же URL, который не работает.

Мой код:

<p>Overview</p>

{% block content %}

<div>
{% for image in images %}

  {{ image.img_photo }} <!-- webgalleries/test.jpg -->

  {% load static %}
  <img src="{% static 'webgalleries/test.jpg' %}" alt="{{ image }}"> <!-- working -->
  <img src="{% static '{{ image.img_photo }}' %}" alt="{{ image }}"> <!-- not working -->

{% empty %}
  <p>No content</p>

{% endfor %}

</div>

{% endblock content %}

Я ожидаю, что вывод будет img из моего статического каталога.

Подсказка, некоторые советы или другие формы помощи очень важны.

Большое вам спасибо!

1 Ответ

1 голос
/ 31 октября 2019

хорошо, если вы хотите отображать изображения из базы данных, вы должны выполнить следующие шаги:

1 - перейдите в файл settings.py и напишите этот код,

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

2 - затемсоздайте новую папку в вашем проекте под названием «media» и создайте папку внутри «media» под названием «images» (в итоге результат будет похож на этот «media / images»)

3 - перейдите в файл model.py в вашемкласс, у которого есть 'img_photo'

, и вы должны написать такую ​​модель

class Images(models.Model):

    img_photo = models.ImageField(upload_to='images/',null=True, blank=True)

    def get_image(self):
        if self.img_photo and hasattr(self.img_photo, 'url'):
            return self.img_photo.url
        else:
            return '/path/to/default/image'

    def __str__(self):
        return self.img_photo

4 - перейдите в admin.py, затем напишите:

from yourapp.models import Images

и добавьтеэту строку ниже

admin.site.register (Images)

, затем откройте свой терминал или консоль и напишите:

1- python manage.py makemigrations

2- python manage.py migrate

5- в html-коде, который вы должны написать:

    {% for image in Images %}

    <img src="{{ image.get_image }}" >

    {% endfor %}
  • зайдите в админ-панель и загрузите любую фотографию для теста
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...