223.65K
Категория: ПрограммированиеПрограммирование

Динамическая верстка template, запросы к бд для вывода информации

1.

Практика 3
Динамическая верстка template, запросы к бд для вывода
информации

2.

Общее задание на практику 3
• 1. Начало динамической верстки страниц – title, block content, extends
• 2. Создание элемента side-bar, который будет отображаться и куда
будут помещаться наши элементы в дальнейших практиках.
• 3. Создание фильтрации по нашим постам – по дате(от новых к
старым, и в обратном порядке), последние n постов, посты за
последний месяц(или другая дата). Фильтрации создаются в фале
views.py и используются в шаблонах. В данной реализации лучше
сделать в базовом шаблоне (элемент side-bar).
• 4. Создание навигации по детальной информации поста – через
переопределение метода get_absolute_url
• 5. Создание блока возврата на главную страницу
• 6*. Сравнение навигации через HttpResponse и render
• 7*.Создание пагинации(опционально)

3.

1. Шаблоны
Начало динамических страниц(наших шаблонов)
https://metanit.com/python/django/2.3.php
Основные теги шаблонов:
1. {{ }} – помещаются сюда переменные, которые хотим
отобразить (передаются в наш шаблон при вызове view)
2. {% %} – различные логические и циклические
конструкции if else, цикл for и т. Д
Подробнее про теги https://metanit.com/python/django/2.7.php
Расширение и наследование шаблонов https://metanit.com/python/django/2.6.php
https://docs.djangoproject.com/en/4.2/topics/templat
es/

4.

Пример подгрузки статических
файлов к шаблону и применеие
стилей

5.

Создание фильтрации
• Для создания фильтрации необходимо определить
то, какие данные будем загружать – т.е через во
views создается метод, в котором происходит
выборка элементов по параметрам и передача этих
данных шаблону
https://metanit.com/python/django/5.3.php
https://metanit.com/python/django/5.13.php
• Далее необходимо создать пути для вызова либо
одного шаблона, либо нескольких – в зависимости
от реализации
• После чего создаем ссылку в шаблоне по которой
осуществляется доступ к нашему контроллеру
(view)

6.

Get_absolute_url
• Позволяет получить ссылку на конкретный
элемент, этот метод необходимо переопределять в
models.py у нашего объекта, в данном случае с
постами
• Метод reverse в данном вызывает дугое
представление при вызове данного функции, те
перебрасывает на метод blogpost_detail

7.

render и HttpResponse
• Необходимо попробовать адресацию с помощью этих
2х методов и сравнить

8.

Пагинация Django*
• Шаги реализации :
1. Импортировать необходимые модули: класс
Paginator и Page
2. Создать объект пагинатора: создаете объект
Paginator, который принимает список данных и
количество элементов на странице.
3. Получить текущую страницу: c помощью объекта
Paginator получаете объект Page, который
содержит данные для текущей страницы.
4. Передать данные в контекст: Затем вы
передаете объект Page в контекст для рендеринга
в шаблоне.

9.

Пример реализации пагинации
https://docs.djangoproject.com/en/4.2/topic
s/pagination/
Подробное описание из оф. документации
English     Русский Правила