Python Flask - простые веб-приложения

Все исходники / Язык программирования Python / OS Windows / Веб программирование / Frameworks для сайтов и веб-приложений / Python Flask - простые веб-приложения
Оглавление:
  1. Framework Python Flask
  2. Простейшее веб-приложение Flask
  3. Настройка Unicode
  4. Простое приложение Flask №2
  5. Исходник веб-приложения Flask

Framework Python Flask

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

Исходник веб-приложения прикрепленный к данной статье содержит все необходимые пакеты и виртуальную среду, но можно самостоятельно создать веб-проект и от исходника использовать только файлы запуска: app.py и app2.py. Как создать веб-проект Python Flask в Visual Studio читайте на странице Создание веб-проекта приложения Flask.

Простейшее веб-приложение Flask

Минимальное рабочее веб-приложение Flask состоит из небольшого количество кода. Каждое веб-приложение описываемого фреймворка должно иметь объект класса Flask. Встроенный шаблон в Visual Studio создает файл приложения с именем app.py, но можно переименовать файл в любое другое название (кроме flask.py), более подходящее для вашего проекта.

Веб-приложение Flask получает в Visual Studio локальный адрес localhost, установленный в операционной системе Windows по умолчанию. Причем, для автоматического запуска браузера, локальный адрес должен быть установлен в свойствах проекта веб-приложения - вкладка Отладка. Незанятый порт для доступа к веб-приложению выбирается операционной системой случайным образом.

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

Можно использовать любые локальные адреса зарегистрированные в операционной системы Windows. Как регистрировать локальные URL-адреса можно прочитать на странице Веб сервер IIS Windows, настройки для тестирования сайтов на компьютере. Запуск приложения в отладочном режиме: app.run(HOST, PORT, True) дает возможность редактировать код без перезапуска сервера разработки Flask.

# ===== Запуск Flask веб-приложения с помощью сервера разработки =====

# Доступ к определению класса Flask
from flask import Flask

# Каждое веб-приложение создает экземпляр класса Flask
app = Flask(__name__)

# Маршрутизатор на основе декоратора запускает функцию hello() по адресу "/"
# Маршрутизатор может запустить любую функцию или даже несколько
@app.route('/')
def hello():
    # Вывод html-кода в браузер по указанному 
    # в маршрутизаторе адресу
    return "<h1>Hello World! Привет Мир!</h1>"


if __name__ == '__main__':
    import os
    # Получение имени хоста для запуска веб-приложения.
    # Настраивается в свойствах проекта.
    HOST = os.environ.get('SERVER_HOST', 'localhost')

    # Если раскомментировать строки ниже
    # в окне интерпретатора распечатается список
    # переменных среды со значениями.
    #print("===== Переменнные среды =====")
    #for key in os.environ.keys() :
    #    print("{0}: {1}".format(key, os.environ[key]), end="\n")
    #print("===== /Переменнные среды ===== \n")

    try:
        # Номер порта доступа к запущенному веб-приложению.
        # Выбирается системой случайным образом.
        PORT = int(os.environ.get('SERVER_PORT', '5789'))
    except ValueError:
        # При ошибке получения порта доступа к веб-приложению
        # определяется порт по умолчанию
        PORT = 5789
    # Запуск сервера разработки в отладочном режиме
    app.run(HOST, PORT, True)

Настройка Unicode

Хотя поддержка UTF-8 установлена в фреймворке Flask по умолчанию, запустив приложение с html-кодом содержащим кириллицу или спецсимволы, вместо успешного запуска, в окне интерпретатора можно увидеть подобную ошибку:
File "...\FlaskWebProjectEmpty \app.py", line 14 return "<h1>Hello World! ������ ���!</h1>"
SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xcf in position 17: invalid continuation byte
Синтаксическая ошибка:(ошибка юникода) Кодек utf-8 не может декодировать байт 0xcf в позиции 17: недопустимый байт продолжения).
Это значит, что кодек Python не смог сопоставить байту 0xcf ни один символ кодировки UTF-8.

Вероятнее всего необходимо изменить кодировку файла app.py на UTF-8. Изменить кодировку текущего файла можно в диалоговом окне из главного меню Visual Studio командами Файл->Сохранить app.py как…. В диалоговом окне нажать на треугольник кнопки сохранения и выбрать Сохранить с кодировкой… и в открывающимся списке выбрать кодировку Юникод(UTF-8, с сигнатурой), кодовая страница 65001. После пересохранения файла в указанной кодировке запуск веб-приложения будет успешным.

Рисунки ниже поясняют как пересохранить файл app.py в кодировке UTF-8.

Диалоговое окно Сохранить как Диалоговое окно замены файла Диалоговое окно выбора кодировки

Простое приложение Flask №2

Назначение файла запуска приложения Python

Для экспериментальной работы с приложением Flask, в прикрепленном исходнике проекта имеются два потенциальных файла запуска. Какой конкретно запускается в текущий момент указывается в свойствах проекта на вкладке Общее

Писать html-код в текстовой строке не очень удобно, поэтому во втором приложении облегчим себе работу по написанию html кода. Для этого будем использовать мощности текстового редактора интегрированной среды Visual Studio. Создадим три html файла, каждый из которых будет представлять отдельную страничку в браузере. Декораторы маршрутизации каркаса Flask минимальным кодом создают человеко-понятные URL адреса веб-страницам. Наполняя html файлы тегами с текстом легко создается примитивный сайт из трех страничек.

Содержимые html файлов выводятся в поток с помощью встроенной функции open(...). Отметьте, что открытие файла в текстовом режиме обязательно предусматривает установку кодировки текста. В случае открытия файла в бинарном режиме, кодировка текста определяется соответственно кодировке самого файла.

Программный код второго приложения Python Flask:
# ===== Запуск Flask веб-приложения с помощью сервера разработки =====

# Доступ к определению класса Flask
from flask import Flask
app = Flask(__name__)

# ====== Маршрутизация на основе декораторов =====

# URL = '/'
@app.route('/')
def home():
    # Чтение файла в текстовом режиме только с указанием кодировки.
    # return open('home.html', 'rt', encoding="utf-8")

    # В бинарном режиме чтения можно не указывать кодировку текста.
    # Возращает байты, кодировка не указывается.
    # Кодировка текста распознается по кодировке файла.
    # Так как кодировка файла UTF-8,
    # то и байты будут восприняты как текст с символами UTF-8.
    return open('home.html', 'rb')

# URL = 'page1'
@app.route('/page1')
def page1():
    return open('page1.html', 'rt', encoding="utf-8")

# URL = 'page2'
@app.route('/page2')
def page2():
    return open('page2.html', 'rt', encoding="utf-8")

# ====== /Маршрутизация на основе декораторов =====

if __name__ == '__main__':
    import os
    HOST = os.environ.get('SERVER_HOST', 'localhost')
    try:
        PORT = int(os.environ.get('SERVER_PORT', '5789'))
    except ValueError:
        PORT = 5789
    app.run(HOST, PORT, True)

Исходник веб-приложения Flask

Архив исходника содержит все необходимые пакеты и виртуальную среду. Для возможности запуска приложения необходимо прописать путь к базовому интерпретатору Python версии от 3.9.7 до 3.10.7 установленный на ваш компьютер, на этих версиях исходник успешно протестирован.

Файл конфигурации виртуальной среды Python Путь к базовому интерпретатору прописывается в файле виртуальной среды проекта env\pyvenv.cfg как показано на рисунке выше. Открыть для просмотра файлы виртуальной среды можно кнопкой на вкладке Обозреватель проектов->Показать все файлы. Получение путей инсталляций интерпретаторов и библиотек Python описано в статье Программирование на Python в Visual Studio.

Скачать исходник

Тема: «Python Flask - простые веб-приложения» Язык программирования Python FlaskWebProjectEmpty-python39_8.zip Размер:7934 КбайтЗагрузки:96