Книга «Изучаем Python»



Pdf көрінісі
бет244/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   240   241   242   243   244   245   246   247   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )


Глава 18 • Знакомство с Django
 
def topics(request):
"""Выводит список тем."""
 
topics = Topic.objects.order_by('date_added')
 
context = {'topics': topics}
 
return render(request, 'learning_logs/topics.html', context)
Сначала импортируется модель, связанная с нужными данными 

. Функции 
topics()
необходим один параметр: объект запроса, полученный Django от сер-
вера 

. В точке 

выдается запрос к базе данных на получение объектов 
Topic

отсортированных по атрибуту 
date_added
. Полученный итоговый набор сохраня-
ется в 
topics
.
В точке 

определяется контекст, который будет передаваться шаблону. 
Контекст
представляет собой словарь, в котором ключами являются имена, используемые 
в шаблоне для обращения к данным, а значениями — данные, которые должны пере-
даваться шаблону. В данном случае существует всего одна пара «ключ—значение», 
которая содержит набор тем, отображаемых на странице. При построении стра-
ницы, использующей данные, функции 
render()
передается переменная 
context

а также объект 
request
и путь к шаблону 

.
Шаблон topics
Шаблон страницы со списком тем получает словарь 
context
, чтобы шаблон мог ис-
пользовать данные, предоставленные 
topics()
. Создайте файл с именем 
topics .html
в одном каталоге с 
index .html
. Вывод списка тем в шаблоне осуществляется следу-
ющим образом:
topics.html
{% extends "learning_logs/base.html" %}
{% block content %}
Topics
 

     
    {% for topic in topics %}
     
  • {{ topic }}

  •  
    {% empty %}
  • No topics have been added yet.

  •  
    {% endfor %}
     

{% endblock content %}
Сначала тег 
{%
extends
%}
объявляет о наследовании от 
base .html
, как и в случае 
с шаблоном 
index
, после чего открывается блок 
content
. Тело страницы содержит 
маркированный (bulleted) список введенных тем. В стандартном языке HTML мар-
кированный список называется 
неупорядоченным списком
и обозначается тегами 

    . Список тем начинается в точке 

    .
    В точке 

    находится другой шаблонный тег, эквивалентный циклу 
    for
    для пере-
    бора списка тем из словаря 
    context
    . Код, используемый в шаблоне, отличает-
    ся от Python в нескольких важных отношениях. Python использует отступы 


    Построение других страниц
    403
    для обозначения строк, входящих в тело цикла. В шаблоне каждый цикл 
    for
    должен 
    снабжаться явным тегом 
    {%
    endfor
    %}
    , обозначающим конец цикла. Таким образом, 
    в шаблонах часто встречаются циклы следующего вида:
    {% for 
    элемент
    in 
    список
    %}
    действия для каждого элемента
    {% endfor %}
    В цикле каждая тема должна быть преобразована в элемент маркированного спи-
    ска. Чтобы вывести значение переменной в шаблоне, заключите ее имя в двойные 
    фигурные скобки. Код 
    {{
    topic
    }}
    в точке 

    будет заменен значением 
    topic
    при 
    каждом проходе цикла. Фигурные скобки на странице не появятся; они всего 
    лишь сообщают Django об использовании шаблонной переменной. Тег HTML 

  • обозначает элемент списка. Все, что находится между тегами, в паре тегов 

      , будет отображаться как элемент маркированного списка.
      В точке 

      находится шаблонный тег 
      {%
      empty
      %}
      , который сообщает Django, что 
      делать при отсутствии элементов в списке. В нашем примере выводится сообще-
      ние о том, что темы еще не созданы. Последние две строки завершают цикл 
      for

      и маркированный список 

      .
      Затем необходимо изменить базовый шаблон и включить ссылку на страницу 
      с темами:
      base.html
       
      Learning Log -
       
      Topics
      {% block content %}{% endblock content %}
      После ссылки на домашнюю страницу 

      добавляется дефис, после которого встав-
      ляется ссылка на страницу тем, которая также представлена шаблонным тегом 


      Эта строка приказывает Django сгенерировать ссылку, соответствующую схеме 
      URL с именем 
      'topics'
      , в 
      learning_logs/urls .py
      .
      Обновив домашнюю страницу в браузере, вы увидите ссылку 
      Topics
      . Щелчок 
      на этой ссылке открывает страницу, похожую на рис. 18.4.


      Достарыңызбен бөлісу:
      1   ...   240   241   242   243   244   245   246   247   ...   266




      ©engime.org 2024
      әкімшілігінің қараңыз

          Басты бет