Django - Динамическое отображение изображений, которые создаются ежедневно - PullRequest
0 голосов
/ 09 мая 2020

Чего я хочу достичь sh, так это иметь отдельное приложение, генерирующее графики, которые будут помещены в каталог моего Django проекта. Затем в моем шаблоне l oop и отобразите все графики из этого каталога на веб-странице. Сгенерированные графики будут обновляться ежедневно и будут иметь разное количество в зависимости от дня (поэтому в некоторые дни это может быть 20 и / или в следующий раз может быть 50).

Вариант 1) Я не думаю Я хочу использовать django manage.py collectstati c каждый день. Я никогда не доходил до развертывания проекта Django на сервере, но я предполагаю, что мне придется собирать c вручную каждый день на сервере (что я мог бы полностью отключить здесь)

Вариант 2) Пробовал создать модель Изображение модели . Поле Char - это просто мой относительный путь к изображению. Оттуда в моих представлениях я должен отображать путь в индексе (запрос) Просмотр изображения . Оттуда в моем шаблоне я пытаюсь l oop через относительные пути изображения и показывать их Template Picture . Когда я удаляю в шаблоне photos = Photo.objects.all () и {% for img in photos%}, страница загружается Веб-страница работает . Однако когда я запускаю его со всеми этими частями, я получаю пустую веб-страницу с надписью «что вы хотите делать с индексом» внизу. Веб-страница не работает

Интересно узнать, есть ли лучший способ сделать это. Я не пытаюсь загрузить поле изображения пользователем, потому что количество графиков будет значительным.

Подробная информация о варианте 2:

--- Примечания ---
Каталог верхнего уровня is - chartingtest-project
chartingtest - это проект
секторы - это имя приложения
медиа-папка - это папка в каталоге верхнего уровня, а не внутри проекта или тестовой папки

models.py в приложениях секторов содержит

class Photo(models.Model):
    photoname = models.ImageField()

views.py в секторах приложение содержит

from .models import Photo

def index(request):
    pets = Pets.objects.all()
    photos = Photo.objects.all()
    return render(request, 'index.html', {'pets': pets}, {'photos': photos})

index. html шаблон

{% load static %}

<H1>Hello World Index!</H1>

#Testing bringing in variables from a model (2020/05/07 Works!)
<ul>
{% for pet in pets %}
  <li>{{pet.name}}</li>
{% endfor %}
</ul>


# ************************************
# This is where I'm trying display generated pictures from the media folder
# ************************************
<ul>
{% for img in photos %}
  <li>
    <img src="chart1s/{{img.image.url}}" />
  </li>
{% endfor %}
</ul>


#Testing Static Image (2020/05/08 Works!)
<img src="{% static "OIP.jpg" %}"/>
<img src="{% static "temp_fig_00.png" %}"/>

settings.py в папке проекта chartingtest

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

1 Ответ

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

Вы правы, что использование файлов stati c не будет работать, по их имени файлы stati c не должны изменяться.

Решение состоит в том, чтобы создать папку мультимедиа, и ваше приложение сохранит графики в эту папку. Изображение вашей модели должно указывать на эту папку. Как вы сказали, в своих шаблонах вы можете затем перебирать эту модель, чтобы отобразить все графики.

В производственной среде вы должны создать корзину облачного хранилища и сохранять там свои изображения. Затем убедитесь, что ваш файл settings.py направляет любые запросы изображений в вашу корзину хранилища.

Ваша модель изображения должна использовать models.ImageField (), а не типичный CharField, image = models.ImageField(). В вашем шаблоне при итерации вы должны вызывать каждое изображение с помощью <img src="{{ picture.image.url }}"

Кроме того, мне нужно было бы подробно изучить код, чтобы увидеть, что происходит, и я не нажимаю ссылки на сообщения stackoverflow. Если вы разместите код в комментарии, возможно, вам удастся найти более близкую ссылку, но сначала попробуйте это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...