Установка только категорий для просмотра на главной странице/установка количества изображений
Здравствуйте, в настоящее время я пытаюсь сделать фотоблог для записи жизни моего сына с фотографиями по мере его роста. Выше приведен мой код для "домашней" страницы (название как галерея).
На данный момент у меня есть цикл for, который добавляет класс "card" на страницу галереи каждый раз, когда я загружаю изображение.
В идеале я хотел бы сделать так, чтобы отображалась только каждая созданная мной категория с одной фотографией из этой категории, а не все фотографии, которые я загружаю на сайт. Я просто не подумал о том, сколько фотографий я буду загружать, и главная страница превратится в огромную свалку фотографий.
Если у кого-нибудь есть идеи, как я могу этого добиться, или любые другие рекомендации, буду очень признателен.
TYIA
Поправьте меня, если я ошибаюсь, но я думаю, что вы пытаетесь добиться того, чтобы иметь различные разделы, например, "молодой", "подросток", "взрослый" или что-то в этом роде, и показывать изображения только в этих разделах с названием раздела в качестве тега в самом изображении? Если это так, то вы можете сделать что-то вроде этого:
{% for photo in photos %}
{% if photo.tag == young %}
<h1>Show young images here</h1>
{% elif photo.tag == teenager %}
<h1>Show teenage images here</h1>
{% elif photo.tag == adult %}
<h1>Show adult images here</h1>
{% else %}
<h1>No photo's yet</h1>
{% endif %}
{% endfor %}
Альтернативно, вы можете сделать это в своих представлениях и подавать разные изображения разным шаблонам, если вы этого хотите.
Это будет выглядеть примерно так:
def teenageImages(request):
teenageImage = Image.objects.raw("SELECT * FROM
photos WHERE tag = 'teenager' ")
template = loader.get_template('teenager_photos.html')
context = {
'photos': teenageImage
}
return HttpResponse(template.render(context, request))
Вы также можете пойти другим путем и использовать filter, более подробную информацию о filter можно найти здесь.
Я предлагаю вам взглянуть на RoutablePageMixin
, см. документацию здесь. С его помощью вы можете заставить вашу домашнюю страницу принимать категорию в качестве переменной, как это делает следующий URL: davidsonsblog.com/category/foobar
Вы можете определить кверисет, отфильтрованный по категориям и упорядоченный случайным образом (например, методом кверисета .order_by('?')
). Если вы хотите показать только одно изображение, добавьте к queryset метод .first()
.
Меню будет генерировать ссылки соответствующим образом.