Skip to content

Latest commit

 

History

History
executable file
·
86 lines (54 loc) · 4.62 KB

README.md

File metadata and controls

executable file
·
86 lines (54 loc) · 4.62 KB

Django шаблони

Час вивести деякі дані! Django надає нам певні допоміжні, вбудовані шаблонні теги для цього.

Що таке шаблонні теги?

Як бачите, в HTML, ви не можете помістити Python код, тому що браузери не зрозуміють його. Вони знають лише HTML. Ми знаємо, що HTML більшою мірою є статичним, в той час як Python є більш динамічним.

Шаблонні теги Django дозволяють нам передавати Python-подібні речі в HTML, таким чином можна розробляти динамічні веб-сайти швидше і простіше. Ой!

Шаблон для виведення списку постів

В попередньому розділі ми надали нашому шаблону список постів у змінній posts. А тепер відобразимо це в HTML.

Щоб надрукувати змінну в Django шаблоні, ми використовуємо подвійні фігурні дужки з іменем змінної всередині:

{{ posts }}

Спробуйте це у вашому шаблоні blog/templates/blog/post_list.html (замініть усе між другими тегами <div></div> на рядок {{ posts }}), збережіть файл і перезавантажте сторінку щоб побачити результати:

Figure 13.1

Як можна побачити, все що ми отримали це:

[<Post: My second post>, <Post: My first post>]

Означає, що Django розуміє це як список об'єктів. Пам'ятаєте із розділу Вступ до Python як ми можемо виводити списки? Так, за допомогою циклів for! В Django шаблоні, вони реалізуються наступним чином:

{% for post in posts %}
    {{ post }}
{% endfor %}

Спробуйте це у вашому шаблоні.

Figure 13.2

Працює! Однак, бажано щоб вони були виведені як статичні пости, які ми створили раніше у розділі Вступ до HTML. Ви можете компонувати теги HTML і шаблонні теги. Наша частина body буде виглядати так:

<div>
    <h1><a href="/">Django Girls Blog</a></h1>
</div>

{% for post in posts %}
    <div>
        <p>published: {{ post.published_date }}</p>
        <h1><a href="">{{ post.title }}</a></h1>
        <p>{{ post.text|linebreaks }}</p>
    </div>
{% endfor %}

Усе, що міститься між {% for %} і {% endfor %} буде повторюватись для кожного об'єкту у списку. Перезавантажте вашу сторінку:

Figure 13.3

Чи помітили ви, що цього разу ми використали трохи відмінні позначення {{ post.title }} або {{ post.text }}? Ми маємо доступ до даних, що містяться в кожному полі, визначеному в нашій моделі Post. Також |linebreaks перенаправляє текст посту через фільтр щоб конвертувати розриви ліній в абзаци.

Ще одне

Було б непогано побачити чи ваш сайт все ще працює на Heroku, чи не так? Давайте спробуємо розгорнути його знову. Якщо ви вже забули як це зробити, зверніться до кінцевої частини розділу 15:

$ git status
...
$ git add -A .
$ git status
...
$ git commit -m "Used Django templates instead of static HTML."
...
$ git push heroku master

Вітаємо! А тепер спробуйте додати новий пост у вашому Django адміністраторі (не забудьте додати published_date!), потім перезавантажте сторінку щоб переконатись що новий пост з'явився.

Працює як заклинання? Ми пишаємось вами! Почастуйте себе чимось солоденьким, ви заслужили :)

Figure 13.4