7 октября 2016 г.

Django. Наполнение страницы данными (часть 10)



Наполним страницу данными, вернемся в views.py и импортируем модуль house

from .models import House

А затем внутри представления напишем:

houses = House.objects.all()


House.objects.all() - этой строкой мы создаем запрос к нашей базе данных с помощью ORM.
objects.all() - запрос на получение всех объектов

Теперь в переменной houses содержаться все дома, которые мы добавили через админку. Мы снова обошлись без SQL запросов к базе данных, что очень упрощает разработку.

Передадим дома в наш шаблон, для этого добавим в функцию render(), третий параметр словарь, в котором напишем {“houses”: houses}, теперь в нашем шаблоне доступны созданные нами объекты.


Перейдем в html файл, т.к. мы связали шаблон с представлениями через render(), то теперь можно кликнуть по значку напротив объявления функции.


Теперь в houses_list.html нам нужно вывести дома через переменную hoses, которую мы передали в шаблон. Для этого нужно воспользоваться языком шаблонов Django.
Язык шаблонов Django - это такой упрощенный язык, с помощью которого можно обращаться к python объектам внутри html файла, а также реализовывать простейшую логику вроде циклов и условий.

Напишем for и нажмем TAB, Pycharm создаст для нас конструкцию for и поместит в нее объект houses


Конструкция for заключается в фигурные скобки с % и имеет окончание {% endfor %}
Внутри конструкции нам доступен объект house, который отвечает за один единственный дом.

Напишем:

div>h2+div*2

и нажмем TAB, чтобы Pycharm быстро создал несколько HTML тэгов.



Добавим в двойных фигурных скобках:

{{ house.name }}
{{ house.price }}
{{ house.description }}


{% … %} - если фигурные скобки с % отвечают за синтаксические конструкции, как например в for, то с помощью двойных фигурных скобок {{ … }}, мы можем обращаться к Python объектам, в нашем случае к объекту house и сейчас мы выводим данные по нашему объекту в HTML.

Откроем сайт и обновим страницу


Отлично!

Комментариев нет :

Отправить комментарий

Оставить отзыв