Шаблоны Django
Last updated
Last updated
Пришло время отобразить данные на сайте! Django поможет нам с этим при помощи встроенных тегов шаблонов.
Как видишь, в HTML нельзя помещать код Python, поскольку браузеры не понимают его. Они знают только HTML. Мы помним, что HTML статичен, в то время как Python позволяет динамические изменения.
Теги шаблонов Django позволяют нам вставлять Python в HTML, так что ты можешь создавать динамические веб-сайты быстрее и проще. То, что надо!
В предыдущей главе мы передали нашему шаблону список записей в переменной posts
. Теперь мы отобразим его в HTML.
Чтобы вставить переменную в шаблон Django, нам нужно использовать двойные фигурные скобки с именем переменной внутри:
Попробуй это в шаблоне blog/templates/blog/post_list.html
. Замени всё, начиная со второго <div>
и вплоть до третьего </div>
кодом {{ posts }}
. Сохрани файл и обнови страницу, чтобы увидеть результат:
Как ты можешь заметить, мы получили следующую строку:
Это показывает, что Django понял переменную как список объектов. Помнишь из главы Введение в Python, как мы можем аккуратно отобразить список? Правильно, циклом for! В шаблонах Django ты можешь использовать их таким образом:
Попробуй вставить это в свой шаблон.
Сработало! Но мы хотим, чтобы они отображались как статические записи, которые мы создавали в главе Введение в HTML. Ты можешь смешивать HTML и теги шаблонов. Наш элемент body
будет выглядеть следующим образом:
Всё, что ты поместишь между {% for %}
и {% endfor %}
, будет повторено для каждого объекта в списке. Обнови страницу:
Ты заметила, что мы использовали немного другую запись в этот раз: {{ post.title }}
или {{ post.text }}
? Мы обращаемся к различным полям нашей модели Post
. Также |linebreaksbr
прогоняет текст через фильтр для преобразования переносов строк в параграфы.
Пришло время ещё раз убедиться, что наш сайт будет работать в сети, согласна? Попробуем развернуть новую версию сайта на PythonAnywhere. Краткий обзор необходимых шагов...
Сначала загружаем код на GitHub
Затем заходим на PythonAnywhere, открываем Bash console и набираем команду:
``` $ cd $USER.pythonanywhere.com $ git pull [...] ```
Наконец, переключаемся на вкладку Web и жмём кнопку Reload. Обновления запущены в жизнь! Даже если записи в твоём блоге на PythonAnywhere отличаются от записей в блоге на локальном сервере, то всё в порядке. Базы данных на твоём локальном компьютере и на PythonAnywhere не синхронизируются, в отличиет от остальных файлов проекта.
Поздравляем! Теперь попробуй добавить новые записи через панель администратора Django (не забывай указывать published_date!). Удостоверься, что ты в панели администратора своего сайта на PythonAnywhere (https://yourname.pythonanywhere.com/admin). Затем обнови страницу, чтобы проверить, появились ли новые записи.
Работает как по волшебству? Есть чем гордиться! Отойди от компьютера на секунду — ты заслужила перерыв :)