Разработка сетевых информационных ресурсов

В англоязычной терминологии Application Programming Interface или сокращенно API. API существует у большого количества программных продуктов: от операционной системы до интернет-сервисов. API — это обычный этап развития программных продуктов.

Как правило, API появляется, когда аудитория, использующая программный продукт, разрастается настолько, что своими силами команда-разработчик уже не успевает реализовывать все запросы пользователей. Создавая API, разработчики обязательно понимают, какие коммерческие цели они преследуют. Можно просто предоставлять API за деньги: продавать разовую лицензию или брать плату за обращение к функциям. Часто API — это средство развития платформы. Например, Windows API. Все пишут программы под ОС Windows, в результате чего выигрывает вся платформа. API может решать и репутационные задачи — создавать лояльную пользовательскую аудиторию.

Встречаются и смешанные решения: одновременно существует бесплатное API с определенными ограничениями (использование только в бесплатных открытых продуктах, с ограничением по количеству обращений) и его платная версия без таковых. На этом принципе построено большинство API в Яндексе.

Содержимое разработки

Разработка сетевых   информационных ресурсов

Разработка сетевых

информационных ресурсов

Содержание

Содержание

  • API
  • Протоколы взаимодействия
  • Протокол HTTP
  • Yandex.Maps API
  • Геокодер
  • Обращение к HTTP на python
  • Работа с протоколом HTTP
  • Поиск по организациям
  • Библиотека flask

API

  В англоязычной терминологии Application Programming Interface или сокращенно API. API существует у большого количества программных продуктов: от операционной системы до интернет-сервисов. API — это обычный этап развития программных продуктов.

Как правило, API появляется, когда аудитория, использующая программный продукт, разрастается настолько, что своими силами команда-разработчик уже не успевает реализовывать все запросы пользователей. Создавая API, разработчики обязательно понимают, какие коммерческие цели они преследуют. Можно просто предоставлять API за деньги: продавать разовую лицензию или брать плату за обращение к функциям. Часто API — это средство развития платформы. Например, Windows API. Все пишут программы под ОС Windows, в результате чего выигрывает вся платформа. API может решать и репутационные задачи — создавать лояльную пользовательскую аудиторию.

Встречаются и смешанные решения: одновременно существует бесплатное API с определенными ограничениями (использование только в бесплатных открытых продуктах, с ограничением по количеству обращений) и его платная версия без таковых. На этом принципе построено большинство API в Яндексе.

Варианты реализации API  Один из вариантов — это библиотека, собранная под одну или несколько платформ. Она может либо содержать нужные нам функции или объекты непосредственно в себе, либо использовать Интернет для доступа к удаленному серверу с работающим на нем сервисом.  Ключ — это последовательность символов, для которой выполняется какое-то условие.  Есть вариант, при котором скачивать не требуется ничего. Это возможно, если сервис реализован как удаленный, использующий для доступа какой-либо стандартный протокол. Например, HTTP. Обычно для доступа к такому сервису требуется иметь ключ и передавать его при каждом обращении к сервису. Ключ можно получить либо в автоматическом, либо в полуавтоматическом режиме, как правило, заполнив форму и выразив согласие с лицензионными соглашениями. Протокол состоит из набора запросов и форматов ответов, предоставляемых сервисом.

Варианты реализации API

Один из вариантов — это библиотека, собранная под одну или несколько платформ. Она может либо содержать нужные нам функции или объекты непосредственно в себе, либо использовать Интернет для доступа к удаленному серверу с работающим на нем сервисом. 

Ключ — это последовательность символов, для которой выполняется какое-то условие. 

Есть вариант, при котором скачивать не требуется ничего. Это возможно, если сервис реализован как удаленный, использующий для доступа какой-либо стандартный протокол. Например, HTTP. Обычно для доступа к такому сервису требуется иметь ключ и передавать его при каждом обращении к сервису. Ключ можно получить либо в автоматическом, либо в полуавтоматическом режиме, как правило, заполнив форму и выразив согласие с лицензионными соглашениями.

Протокол состоит из набора запросов и форматов ответов, предоставляемых сервисом.

Немного о протоколах взаимодействия  При написании web-приложения большинство программистов не задумывается о том, по каким физическим каналам будет происходить взаимодействие. Это стало возможным благодаря стандартизации в этой области и четкому разделению уровней взаимодействия. Сетевая модель OSI (Open systems interconnection basic reference model) представляет собой набор протоколов (стандартов, описывающих правила взаимодействия разных частей систем при передаче данных), каждый из которых отвечает за определенный уровень взаимодействия. Модель имеет семь уровней:

Немного о протоколах взаимодействия

При написании web-приложения большинство программистов не задумывается о том, по каким физическим каналам будет происходить взаимодействие. Это стало возможным благодаря стандартизации в этой области и четкому разделению уровней взаимодействия.

Сетевая модель OSI (Open systems interconnection basic reference model) представляет собой набор протоколов (стандартов, описывающих правила взаимодействия разных частей систем при передаче данных), каждый из которых отвечает за определенный уровень взаимодействия. Модель имеет семь уровней:

Модель OSI

Модель OSI

  • Физический, на котором происходит преобразование двоичных данных в вид, пригодный для передачи в среде (USB, витая пара, WiFi).
  • Канальный, на котором происходит физическая адресация.
  • Сетевой, на котором происходит логическая адресация.
  • Транспортный — для обеспечения связи между конечными точками и обеспечения надежности.
  • Сеансовый — для обеспечения сеанса связи.
  • Представительский (представления) для представления и шифрования/дешифрования данных.
  • Прикладной, на котором происходит доступ к сетевым службам (SMTP, FTP, HTTP).
Модель OSI

Модель OSI

Подробнее о протоколе HTTP  HTTP - протокол, позволяющий отправлять запросы Интернет-сервису и получать на них ответы. В протоколе есть несколько разного вида запросов: GET, POST, HEAD, DELETE и т. д. Как правило, запросы используются следующим образом: GET — для получения каких-либо данных с сервера POST — для передачи большого объема данных на сервер и получения ответа HEAD — для получения информации о данных с сервера DELETE — для удаления данных с сервера Помимо вида запроса обычно требуется указать:

Подробнее о протоколе HTTP

HTTP - протокол, позволяющий отправлять запросы Интернет-сервису и получать на них ответы.

В протоколе есть несколько разного вида запросов: GET, POST, HEAD, DELETE и т. д.

Как правило, запросы используются следующим образом:

  • GET — для получения каких-либо данных с сервера
  • POST — для передачи большого объема данных на сервер и получения ответа
  • HEAD — для получения информации о данных с сервера
  • DELETE — для удаления данных с сервера

Помимо вида запроса обычно требуется указать:

  • Адрес сервера, которому запрос направлен
  • Путь к конкретной странице на сервере, которую необходимо получить, или к скрипту, который должен обработать запрос
  • Дополнительные параметры запроса
  • Вид ожидаемого ответа
Подробнее о протоколе HTTP  Протокол HTTP используется браузерами при просмотре интернет-страниц. По умолчанию применяется метод GET, формат ответа — html, json или какой-либо еще стандартный формат, и указывать это при каждом запросе не требуется. Остальная часть запроса записывается в виде: http://static-maps.yandex.ru/1.x/?ll=37.677751,55.757718&spn=0.016457,0.00619&l=map

Подробнее о протоколе HTTP

Протокол HTTP используется браузерами при просмотре интернет-страниц. По умолчанию применяется метод GET, формат ответа — html, json или какой-либо еще стандартный формат, и указывать это при каждом запросе не требуется. Остальная часть запроса записывается в виде:

http://static-maps.yandex.ru/1.x/?ll=37.677751,55.757718&spn=0.016457,0.00619&l=map

Подробнее о протоколе HTTP  Коды состояния HTTP:

Подробнее о протоколе HTTP

Коды состояния HTTP:

  • 200 означает, что все прошло успешно
  • 3xx — ошибки, связанные с перемещением страницы и т. п.
  • 4xx — ошибки клиента (например, 403 — не хватает прав, 404 — файл не найден)
  • 5xx — ошибки уровня приложения (запрос получен, а скрипт, который должен выдать ответ, ответа не выдал)
Знакомство с Yandex.Maps API  Откуда брать информацию про пути, ключи и их значения, из которых состоят запросы к API? Для этого используется документация API. Содержание  ресурса . HTTP-API состоит из трех частей: Static API Карт (получить картинку с картой какой-то области с заданными параметрами) Геокодер (поиск топонимов, то есть картографических объектов) ППО (Поиск По Организациям) Кроме того, в документации указано, что ключ для доступа  не нужен . Лицензионное соглашение предписывает использование API в некоммерческих общедоступных  веб-приложениях . Static API позволяет получить изображение нужного фрагмента карты, которое можно разместить на сайте или в приложении. Такое изображение оптимизировано, «весит» не очень много и загружается быстро даже при медленном Интернете.

Знакомство с Yandex.Maps API

Откуда брать информацию про пути, ключи и их значения, из которых состоят запросы к API? Для этого используется документация API. Содержание  ресурса .

HTTP-API состоит из трех частей:

  • Static API Карт (получить картинку с картой какой-то области с заданными параметрами)
  • Геокодер (поиск топонимов, то есть картографических объектов)
  • ППО (Поиск По Организациям)

Кроме того, в документации указано, что ключ для доступа  не нужен . Лицензионное соглашение предписывает использование API в некоммерческих общедоступных  веб-приложениях .

Static API позволяет получить изображение нужного фрагмента карты, которое можно разместить на сайте или в приложении. Такое изображение оптимизировано, «весит» не очень много и загружается быстро даже при медленном Интернете.

Знакомство с Yandex.Maps API  Static API возвращает изображение карты в ответ на HTTPS-запрос (HTTPS — защищенная разновидность HTTP). Добавляя в URL разные параметры и задавая их значения, можно определить центр карты, ее размер и область показа, отметить нужные объекты, отобразить пробки и др. При этом при каждом новом запросе будет возвращаться изображение с актуальными данными. Документация для Static API:   https://tech.yandex.ru/maps/doc/staticapi/1.x/dg/concepts/input_params-docpage/ Пример запроса:   https://static-maps.yandex.ru/1.x/?ll=37.677751,55.757718&spn=0.016457,0.00619&l=map В ответ придет картинка с картой запрошенной области. Самостоятельно посмотреть в документации назначение параметров  ll ,  spn ,  l .

Знакомство с Yandex.Maps API

Static API возвращает изображение карты в ответ на HTTPS-запрос (HTTPS — защищенная разновидность HTTP). Добавляя в URL разные параметры и задавая их значения, можно определить центр карты, ее размер и область показа, отметить нужные объекты, отобразить пробки и др. При этом при каждом новом запросе будет возвращаться изображение с актуальными данными.

Документация для Static API:

  https://tech.yandex.ru/maps/doc/staticapi/1.x/dg/concepts/input_params-docpage/

Пример запроса:

  https://static-maps.yandex.ru/1.x/?ll=37.677751,55.757718&spn=0.016457,0.00619&l=map

В ответ придет картинка с картой запрошенной области.

Самостоятельно посмотреть в документации назначение параметров  ll ,  spn ,  l .

Знакомство с Yandex.Maps API  C помощью запросов к API через браузер получить: Крупномасштабную схему МГУ им. Ломоносова Спутниковый снимок Эйфелевой башни Спутниковый снимок Авачинского вулкана Спутниковый снимок космодрома Байконур Для решения задачи в Я.Карты найти объекты через поиск и получить координаты для параметра  ll . Параметр  spn  можно подобрать экспериментально.

Знакомство с Yandex.Maps API

C помощью запросов к API через браузер получить:

  • Крупномасштабную схему МГУ им. Ломоносова
  • Спутниковый снимок Эйфелевой башни
  • Спутниковый снимок Авачинского вулкана
  • Спутниковый снимок космодрома Байконур

Для решения задачи в Я.Карты найти объекты через поиск и получить координаты для параметра  ll . Параметр  spn  можно подобрать экспериментально.

Геокодер (поиск топонимических объектов)  Геокодер помогает определить координаты объекта по его адресу или, наоборот, установить адрес по координатам. К геокодеру можно также обращаться по протоколу HTTPS. Для обращения к этому API нужен ключ, бесплатный ключ имеет ряд  ограничений , но он полностью подойдет для учебных целей, получить его можно  тут . Можно самостоятельно ознакомиться с  документацией . Пример: Получить координаты Якутска и Магадана в формате JSON. Выяснить, какой город находится севернее: Якутск или Магадан? Запрос:  https://geocode-maps.yandex.ru/1.x/?apikey=40d1649f-0493-4b70-98ba-98533de7710b&geocode= Якутск& format= json Якутск:

Геокодер (поиск топонимических объектов)

Геокодер помогает определить координаты объекта по его адресу или, наоборот, установить адрес по координатам. К геокодеру можно также обращаться по протоколу HTTPS.

Для обращения к этому API нужен ключ, бесплатный ключ имеет ряд  ограничений , но он полностью подойдет для учебных целей, получить его можно  тут . Можно самостоятельно ознакомиться с  документацией .

Пример: Получить координаты Якутска и Магадана в формате JSON. Выяснить, какой город находится севернее: Якутск или Магадан?

Запрос:  https://geocode-maps.yandex.ru/1.x/?apikey=40d1649f-0493-4b70-98ba-98533de7710b&geocode= Якутск& format= json

Якутск: "129.732555 62.028098" (севернее).

Магадан: "150.808541 59.568164".

Обращение к HTTP-сервису на Python  Одной из самых популярных библиотек для этого является библиотека  requests . Библиотека requests не входит в стандартную библиотеку Python, поэтому перед использованием ее надо установить. import requests response = requests . get (

Обращение к HTTP-сервису на Python

Одной из самых популярных библиотек для этого является библиотека  requests . Библиотека requests не входит в стандартную библиотеку Python, поэтому перед использованием ее надо установить.

import requests

response = requests . get ( "http://geocode-maps.yandex.ru/1.x/?apikey=40d1649f-0493-4b70-98ba-98533de7710b&geocode=Якутск&format=json" )

print ( response , type ( response ))

Обращение к HTTP-сервису на Python  Простейшая программа, выполняющая запрос к серверу, анализирующая код ответа и в случае успешного запроса печатающая полученную страницу: import requests # Готовим запрос.  geocoder_request =

Обращение к HTTP-сервису на Python

Простейшая программа, выполняющая запрос к серверу, анализирующая код ответа и в случае успешного запроса печатающая полученную страницу:

import requests # Готовим запрос.

geocoder_request = "http://geocode-maps.yandex.ru/1.x/?apikey=40d1649f-0493-4b70-98ba-98533de7710b&geocode=Якутск&format=json" # Выполняем запрос. response = requests . get ( geocoder_request )

if response : # Запрос успешно выполнен, печатаем полученные данные. print ( response . content )

else : # Произошла ошибка выполнения запроса. Обрабатываем http-статус. print ( "Ошибка выполнения запроса:" )

print ( geocoder_request )

print ( "Http статус:" , response . status_code , "(" , response . reason , ")" )

b'{"response":{"GeoObjectCollection":{"metaDataProperty":{"GeocoderResponseMetaData":{"request":"\xd0\xaf\xd0\xba\xd1\x83\xd1\x82\xd1\x81\xd0\xba","found":"3","results":"10"}},"featureMember":[{"GeoObject":{"metaDataProperty":{"GeocoderMetaData":{"kind":"locality","text":"\xd0\xa0\xd0\xbe\xd1\x81\xd1\x81\xd0\xb8\xd1\x8f, \xd0\xa0\xd0\xb5\xd1\x81\xd0\xbf\xd1\x83\xd0\xb1\xd0\xbb\xd0\xb8\xd0\xba\xd0\xb0 \xd0\xa1\xd0\xb0\xd1\x85\xd0\xb0 (\xd0\xaf\xd0\xba\xd1\x83\xd1\x82\xd0\xb8\xd1\x8f), \xd0\xaf\xd0\xba\xd1\x83\xd1\x82\xd1\x81\xd0\xba","precision":"other","Address":{"country_code":"RU","formatted":"\xd0\xa0\xd0\xb5\xd1\x81\xd0\xbf\xd1\x83\xd0\xb1\xd0\xbb\xd0\xb8\xd0\xba\xd0\xb0 \xd0\xa1\xd0\xb0\xd1\x85\xd0\xb0 (\xd0\xaf\xd0\xba\xd1\x83\xd1\x82\xd0\xb8\xd1\x8f), \xd0\xaf\xd0\xba\xd1\x83\xd1\x82\xd1\x81\xd0\xba","Components":...

Обращение к HTTP-сервису на Python  import requests geocoder_request =

Обращение к HTTP-сервису на Python

import requests

geocoder_request = "http://geocode-maps.yandex.ru/1.x/?apikey=40d1649f-0493-4b70-98ba-98533de7710b&geocode=Якутск&format=json" # Выполняем запрос.

response = requests . get ( geocoder_request )

if response : # Преобразуем ответ в json-объект

json_response = response . json () # Получаем первый топоним из ответа геокодера. # Согласно описанию ответа, он находится по следующему пути:

toponym = json_response [ "response" ][ "GeoObjectCollection" ][ "featureMember" ][ 0 ][ "GeoObject" ] # Полный адрес топонима:

toponym_address = toponym [ "metaDataProperty" ][ "GeocoderMetaData" ][ "text" ] # Координаты центра топонима:

toponym_coodrinates = toponym [ "Point" ][ "pos" ] # Печатаем извлечённые из ответа поля:

print ( toponym_address , "имеет координаты:" , toponym_coodrinates )

else :

print ( "Ошибка выполнения запроса:" )

print ( geocoder_request )

print ( "Http статус:" , response . status_code , "(" , response . reason , ")" )

Россия, Республика Саха (Якутия), Якутск имеет координаты: 129.731235 62.027757

Обращение к HTTP-сервису на Python  Запросив изображение карты через Static API, мы можем отрисовать его в окне программы

Обращение к HTTP-сервису на Python

Запросив изображение карты через Static API, мы можем отрисовать его в окне программы

Обращение к HTTP-сервису на Python

Обращение к HTTP-сервису на Python

Обращение к HTTP-сервису на Python

Обращение к HTTP-сервису на Python

Работа с протоколом HTTP  Задание параметров url В более сложных задачах запрос приходится формировать в ходе выполнения программы, основываясь на данных, введенных пользователем или полученных иным образом.  Для удобства формирования запросов в функциях requests.request() и requests.get() есть именованный параметр params, представляющий собой словарь (dict). В нем содержится отображение из названий параметров в их значения. Рассмотрим предыдущий пример:

Работа с протоколом HTTP

Задание параметров url

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

Для удобства формирования запросов в функциях requests.request() и requests.get() есть именованный параметр params, представляющий собой словарь (dict). В нем содержится отображение из названий параметров в их значения. Рассмотрим предыдущий пример:

Работа с протоколом HTTP  Первый вариант использовать проще и быстрее, если нужно выполнить всего один константный запрос. Второй вариант предпочтительнее, когда надо формировать запрос «на лету». Например, если координаты вводятся пользователем или их получают, например, в ответе геокодера.

Работа с протоколом HTTP

Первый вариант использовать проще и быстрее, если нужно выполнить всего один константный запрос. Второй вариант предпочтительнее, когда надо формировать запрос «на лету». Например, если координаты вводятся пользователем или их получают, например, в ответе геокодера.

API Поиска по организациям  Страница API:  https://tech.yandex.ru/maps/geosearch/ Для этого API нужен ключ. Если нужен доступ к API поиска по организациям, необходимо получить ключ. Для этого нужно заполнить форму, указав данные для связи, а также сайт, на котором предполагается использовать данное API.  Ключ для сервиса можно бесплатно получить по адресу:   https://developer.tech.yandex.ru/services/ Формат диалога с Поиском по организациям похож на формат геокодера. Найдем ближайшую аптеку к вашему дому. Формат запроса описан на  странице . Формат ответа на странице:    Формат ответа | Static API

API Поиска по организациям

Страница API:  https://tech.yandex.ru/maps/geosearch/

Для этого API нужен ключ. Если нужен доступ к API поиска по организациям, необходимо получить ключ. Для этого нужно заполнить форму, указав данные для связи, а также сайт, на котором предполагается использовать данное API. 

Ключ для сервиса можно бесплатно получить по адресу:

  https://developer.tech.yandex.ru/services/

Формат диалога с Поиском по организациям похож на формат геокодера. Найдем ближайшую аптеку к вашему дому. Формат запроса описан на  странице .

Формат ответа на странице:

  Формат ответа | Static API

API Поиска по организациям

API Поиска по организациям

API Поиска по организациям

API Поиска по организациям

Инструменты для разработки web-приложений  В настоящее время разрабатывать веб-приложения можно практически на любом языке программирования, для каждого из которых создано много библиотек, облегчающих те или иные аспекты написания веб-приложений. Одной из сильных областей Python является достаточно простое создание веб-страниц. Веб-приложения на Python можно писать без установки дополнительных библиотек, так как интерпретатор поставляется со встроенным CGI (стандарт интерфейса, применяемого для связи внешней программы с веб-сервером) сервером. Рассмотрим файл server.py:

Инструменты для разработки

web-приложений

В настоящее время разрабатывать веб-приложения можно практически на любом языке программирования, для каждого из которых создано много библиотек, облегчающих те или иные аспекты написания веб-приложений.

Одной из сильных областей Python является достаточно простое создание веб-страниц. Веб-приложения на Python можно писать без установки дополнительных библиотек, так как интерпретатор поставляется со встроенным CGI (стандарт интерфейса, применяемого для связи внешней программы с веб-сервером) сервером. Рассмотрим файл server.py:

Инструменты для разработки web-приложений  Создадим рядом с сервером папку с именем cgi-bin, внутри которой создадим скрипт с именем index.py. Перейдем по адресу localhost:8000/cgi-bin/index.py, получим результат выполнения нашего скрипта: Для Python разработано достаточно большое количество библиотек, которые значительно упрощают процесс создания веб-страниц. Некоторые из этих библиотек большие (Django, Twisted), а некоторые (Bottle, Flask) значительно меньше (их еще называют микро-фреймворками). Самыми популярными фреймворками для создания веб-приложений на Python на текущий момент являются Django и flask. 

Инструменты для разработки

web-приложений

Создадим рядом с сервером папку с именем cgi-bin, внутри которой создадим скрипт с именем index.py. Перейдем по адресу localhost:8000/cgi-bin/index.py, получим результат выполнения нашего скрипта:

Для Python разработано достаточно большое количество библиотек, которые значительно упрощают процесс создания веб-страниц. Некоторые из этих библиотек большие (Django, Twisted), а некоторые (Bottle, Flask) значительно меньше (их еще называют микро-фреймворками).

Самыми популярными фреймворками для создания веб-приложений на Python на текущий момент являются Django и flask. 

Введение во flask  Flask не входит в стандартную библиотеку Python.

Введение во flask

Flask не входит в стандартную библиотеку Python.

Статический контент  Всю подобную информацию Flask по умолчанию ищет в директории static, поэтому давайте ее создадим. Для более аккуратной организации файлов рекомендуется создавать подпапки в static для каждого типа статического контента, который у вас есть, например, static/img, static/fonts и т. д.

Статический контент

Всю подобную информацию Flask по умолчанию ищет в директории static, поэтому давайте ее создадим. Для более аккуратной организации файлов рекомендуется создавать подпапки в static для каждого типа статического контента, который у вас есть, например, static/img, static/fonts и т. д.

Статический контент    Обработчик  return_sample_page , который возвращает пользователю HTML-страницу. Добавим css-файл style.css в папку css внутри папки со статическим контентом.

Статический контент

  Обработчик  return_sample_page , который возвращает пользователю HTML-страницу. Добавим css-файл style.css в папку css внутри папки со статическим контентом.

Статический контент    Bootstrap — это свободный набор инструментов для создания сайтов и веб-приложений, который включает в себя скрипты, стили, иконки и многое другое. Набор расширяемый и достаточно гибкий. Кроме того, у него огромное сообщество, которое предлагает большое количество уже готовых тем и компонентов для Bootstrap, большая часть которых либо свободно распространяемая, либо бесплатная, либо стоит не очень много. Инструкцию по подключению и использованию Bootstrap можно найти на  официальном сайте . Само подключение состоит из нескольких частей: Подключение стилей Подключение JavaScript Пример функции, которая отдает простую страничку с подключением Bootstrap и несколькими элементами на ней.

Статический контент

  Bootstrap — это свободный набор инструментов для создания сайтов и веб-приложений, который включает в себя скрипты, стили, иконки и многое другое. Набор расширяемый и достаточно гибкий. Кроме того, у него огромное сообщество, которое предлагает большое количество уже готовых тем и компонентов для Bootstrap, большая часть которых либо свободно распространяемая, либо бесплатная, либо стоит не очень много.

Инструкцию по подключению и использованию Bootstrap можно найти на  официальном сайте .

Само подключение состоит из нескольких частей:

  • Подключение стилей
  • Подключение JavaScript

Пример функции, которая отдает простую страничку с подключением Bootstrap и несколькими элементами на ней.

Статический контент

Статический контент

Статический контент  Если функция будет возвращать просто число, то получим страницу с ошибкой.

Статический контент

Если функция будет возвращать просто число, то получим страницу с ошибкой.

Передача параметров в адресной строке  Взаимодействовать с пользователем веб-приложения можно несколькими способами, например, средством передачи параметров в адресной строке. Декоратор app.route умеет принимать на вход значение одного или нескольких параметров.

Передача параметров в адресной строке

Взаимодействовать с пользователем веб-приложения можно несколькими способами, например, средством передачи параметров в адресной строке. Декоратор app.route умеет принимать на вход значение одного или нескольких параметров.

Передача параметров в адресной строке  Flask позволяет указывать несколько параметров, а также явно определять их тип с помощью конвертера. 

Передача параметров в адресной строке

Flask позволяет указывать несколько параметров, а также явно определять их тип с помощью конвертера. 

Передача параметров в адресной строке  Всего конвертеров пять: Передача параметров в адресе командной строки используется достаточно часто для динамического формирования однотипных страниц. Например, на сайте pypi.org такой способ применяется для формирования страниц с информацией о каждом конкретном модуле.

Передача параметров в адресной строке

Всего конвертеров пять:

Передача параметров в адресе командной строки используется достаточно часто для динамического формирования однотипных страниц. Например, на сайте pypi.org такой способ применяется для формирования страниц с информацией о каждом конкретном модуле.

Обработка форм  Передача параметра в адресной строке — это скорее не инструмент взаимодействия с пользователем, а динамическое формирование для него ссылок на разные объекты внутри веб-приложения. Для непосредственного общения с пользователем такой способ неудобен, так как в общем случае параметров может быть много, а предлагать пользователю заносить их в адресную строку руками — не лучшая идея. Для взаимодействия с пользователем применяется другой механизм — формы. HTML-разметка позволяет создавать элементы для ввода данных разных типов, с которыми Flask умеет работать.

Обработка форм

Передача параметра в адресной строке — это скорее не инструмент взаимодействия с пользователем, а динамическое формирование для него ссылок на разные объекты внутри веб-приложения. Для непосредственного общения с пользователем такой способ неудобен, так как в общем случае параметров может быть много, а предлагать пользователю заносить их в адресную строку руками — не лучшая идея.

Для взаимодействия с пользователем применяется другой механизм — формы. HTML-разметка позволяет создавать элементы для ввода данных разных типов, с которыми Flask умеет работать.

Обработка форм  Рассмотрим форму с несколькими типами полей ввода, для их стилизации будем использовать Bootstrap. Чтобы увидеть, в каком виде информация из этих полей придет на сервер веб-приложения, напишем такой код (предварительно импортировав request из Flask):

Обработка форм

Рассмотрим форму с несколькими типами полей ввода, для их стилизации будем использовать Bootstrap. Чтобы увидеть, в каком виде информация из этих полей придет на сервер веб-приложения, напишем такой код (предварительно импортировав request из Flask):

Обработка форм

Обработка форм

Обработка форм

Обработка форм

Обработка форм

Обработка форм

Обработка форм  Декоратор app.route дополнен параметром — списком методов протокола HTTP, с которыми он работает. Наиболее часто используемые:

Обработка форм

Декоратор app.route дополнен параметром — списком методов протокола HTTP, с которыми он работает. Наиболее часто используемые:

Обработка форм  Результат заполнения формы: Нюанс с приложенным файлом: мы достали только его название, а не содержимое. Это произошло потому, что содержимое файла хранится в другом месте.

Обработка форм

Результат заполнения формы:

Нюанс с приложенным файлом: мы достали только его название, а не содержимое. Это произошло потому, что содержимое файла хранится в другом месте.

Обработка форм

Обработка форм

Шаблоны  Во Flask шаблоны записываются как отдельные файлы, хранящиеся в папке templates, которая находится (по умолчанию) в корневой папке приложения. 

Шаблоны

Во Flask шаблоны записываются как отдельные файлы, хранящиеся в папке templates, которая находится (по умолчанию) в корневой папке приложения. 

Шаблоны  Импортируем render_template из flask.

Шаблоны

Импортируем render_template из flask.

Шаблоны  Параметры в шаблон не обязательно передавать по отдельности, так как их может быть много и получать мы их можем внутри нашей потенциально длиной функции в разных местах. Можно собирать их в словарь параметров, а потом распаковывать его в вызове функции  render_template :

Шаблоны

Параметры в шаблон не обязательно передавать по отдельности, так как их может быть много и получать мы их можем внутри нашей потенциально длиной функции в разных местах. Можно собирать их в словарь параметров, а потом распаковывать его в вызове функции  render_template :

Условия в шаблонах  Шаблон odd_even.html и обработчик :

Условия в шаблонах

Шаблон odd_even.html и обработчик :

Условия в шаблонах  Синтаксис условного оператора в шаблонах: Допускаются вложенности условного оператора в шаблонах:

Условия в шаблонах

Синтаксис условного оператора в шаблонах:

Допускаются вложенности условного оператора в шаблонах:

Циклы в шаблонах  Создадим тестовый json-файл со списком новостей:

Циклы в шаблонах

Создадим тестовый json-файл со списком новостей:

Циклы в шаблонах  Обработчик и шаблон:

Циклы в шаблонах

Обработчик и шаблон:

Циклы в шаблонах  Результат:

Циклы в шаблонах

Результат:

Циклы в шаблонах  Синтаксис: Внутри цикла доступна переменная  loop  с рядом полезных атрибутов, например:

Циклы в шаблонах

Синтаксис:

Внутри цикла доступна переменная  loop  с рядом полезных атрибутов, например:

Переменные в шаблонах  Синтаксис: Пример создания шаблона с переменной:

Переменные в шаблонах

Синтаксис:

Пример создания шаблона с переменной:

Наследование в шаблонах  Базовый шаблон:

Наследование в шаблонах

Базовый шаблон:

Наследование в шаблонах  Изменим файл index.html: Официальная документация: https://jinja.palletsprojects.com/en/stable/templates/#template-inheritance https://jinja.palletsprojects.com/en/stable/

Наследование в шаблонах

Изменим файл index.html:

Официальная документация:

https://jinja.palletsprojects.com/en/stable/templates/#template-inheritance

https://jinja.palletsprojects.com/en/stable/

Модуль flask-wtf  Микрофреймворк Flask силен, в том числе, и своей расширяемостью, которая позволяет значительно наращивать функциональность веб-приложения за счет дополнительных модулей. Рассмотрим модуль flask-wtf для создания и обработки форм. Эта настройка защитит наше приложение от  межсайтовой подделки запросов .

Модуль flask-wtf

Микрофреймворк Flask силен, в том числе, и своей расширяемостью, которая позволяет значительно наращивать функциональность веб-приложения за счет дополнительных модулей. Рассмотрим модуль flask-wtf для создания и обработки форм.

Эта настройка защитит наше приложение от  межсайтовой подделки запросов .

Модуль flask-wtf  Создадим форму авторизации для входа в приложение, которая будет содержать текстовое поле для ввода логина, поле для ввода пароля, чекбокс «Запомнить меня» и кнопку отправки формы на сервер.  Файл loginform.py

Модуль flask-wtf

Создадим форму авторизации для входа в приложение, которая будет содержать текстовое поле для ввода логина, поле для ввода пароля, чекбокс «Запомнить меня» и кнопку отправки формы на сервер. 

Файл loginform.py

Модуль flask-wtf  Напишем обработчик:

Модуль flask-wtf

Напишем обработчик:

Модуль flask-wtf  Шаблон login.html, который будет расширять уже существующий шаблон base.html.

Модуль flask-wtf

Шаблон login.html, который будет расширять уже существующий шаблон base.html.

Модуль flask-wtf  Результата работы:

Модуль flask-wtf

Результата работы:

Рекомендуемая литература:   Изучаем программирование на Python / Берри Пол; [пер. с англ. М.А. Райтман]. — Москва : Издательство «Э», 2017. — 624 с. Изучаем Python: программирование игр, визуализация данных, веб-приложения / Мэтиз Эрик; — СПб.: Питер, 2020. — 512 с. Бенкен, Е.С. PHP, MySQL, XML: программирование для Интернета / Е.С. Бенкен .- 2-изд., перераб. и доп. - СПб. : БВХ-Петербург, 2008. - 321 с. : ил. + 1 электр. опт.диск (CD-ROM). - ISBN 978-5-9775-0280-1.

Рекомендуемая литература:

  • Изучаем программирование на Python / Берри Пол; [пер. с англ. М.А. Райтман]. — Москва : Издательство «Э», 2017. — 624 с.
  • Изучаем Python: программирование игр, визуализация данных, веб-приложения / Мэтиз Эрик; — СПб.: Питер, 2020. — 512 с.
  • Бенкен, Е.С. PHP, MySQL, XML: программирование для Интернета / Е.С. Бенкен .- 2-изд., перераб. и доп. - СПб. : БВХ-Петербург, 2008. - 321 с. : ил. + 1 электр. опт.диск (CD-ROM). - ISBN 978-5-9775-0280-1.

Сохранить у себя:
Разработка сетевых информационных ресурсов

Получите свидетельство о публикации сразу после загрузки работы



Получите бесплатно свидетельство о публикации сразу после добавления разработки