Получение значения из формы Flask
разбираюсь во Flask на примере простой страницы получения имени пользователя и пароля. При этом код не работает и не возвращает значение.
Вход h2 < background-color: gray; color: black; padding: 10px; margin-top: 0px; >div Автосервис
>
Код Python:
@app.route('/login', methods = ['post', 'get']) def login(): message = '' if request.method == 'post': username = request.form.get('username') password = request.form.get('password') if username == 'root' and password == 'root': message = 'correct' else: message = 'incorrent' return render_template('login.html', message = message)
Отслеживать
26k 4 4 золотых знака 21 21 серебряный знак 36 36 бронзовых знаков
задан 8 ноя 2021 в 19:45
Женя Ермолаев Женя Ермолаев
21 5 5 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Советую приучать себя к хорошему и изучить FlaskForm | Статья на habr (Настоятельно советую прочитать)
FlaskForm создают формы как объекты для дальнейшей передачи html файлу и обработки на стороне сервера.
Советую вам подробно ознакомиться с документацией и, при необходимости, посмотреть на пример из моего недавнего проекта.
Вот пример формы из моего проекта
from flask_wtf import FlaskForm from wtforms import PasswordField, StringField, SubmitField, TextAreaField, BooleanField, IntegerField from wtforms.validators import DataRequired, EqualTo, Email, Length class RegistrationForm(FlaskForm): name = StringField("Your name", validators=[DataRequired()]) email = StringField("E-mail", validators=[DataRequired(), Email('Incorrect email')]) password = PasswordField("Password", validators=[DataRequired()]) confirm_password = PasswordField("Confirm password", validators=[ DataRequired(), EqualTo("password", message="Passwords must match")]) description = TextAreaField("Short description (you can fill it later)") submit = SubmitField("Let's go!")
Далее нужно передать эту форму html странице:
form = RegistrationForm() return render_template("registration.html", form=form)
В html (как пример):
После этого на стороне сервера получим эту форму всё в той же функции рендера страницы
form = RegistrationForm() Мы уже написали (см. выше) Теперь добавим обработку данных из формы следующим образом:
if form.validate_on_submit(): // code
Как вы могли догадаться из функции, она проверяет валидность формы. В конце if вы, при необходимости, можете написать новый render_template или redirect
Как получить данные с входа во Flask?
Чтобы получить данные из входного запроса Flask, вы можете использовать объект request . Он содержит полезные методы для доступа к данным из форм и JSON входных данных. Вот пример, показывающий, как получить данные из формы:
from flask import request @app.route('/process_form', methods=['POST']) def process_form(): name = request.form.get('name') age = request.form.get('age') return f"Привет, ! Тебе лет."
А вот пример получения данных в формате JSON:
from flask import request @app.route('/process_json', methods=['POST']) def process_json(): data = request.get_json() name = data.get('name') age = data.get('age') return f"Привет, ! Тебе лет."
Важно помнить, что в случае использования метода POST, вы должны добавить соответствующий атрибут methods в декораторе @app.route .
Детальный ответ
Как получить данные из входа в Flask
Flask — это популярный фреймворк Python для создания веб-приложений. Он предоставляет простой и эффективный способ обрабатывать веб-запросы и получать данные от пользователя. Разработчики могут легко получать данные из входа Flask, используя несколько основных методов и функций.
1. Получение данных из строки запроса
Строка запроса — это часть URL-адреса, которая следует после знака вопроса (?), и содержит параметры запроса в формате «ключ=значение». Для получения данных из строки запроса в Flask можно использовать объект запроса (request). Объект запроса предоставляет доступ к строке запроса и ее параметрам через атрибуты, такие как request.args.
from flask import Flask, request app = Flask(__name__) @app.route('/example') def example(): name = request.args.get('name') age = request.args.get('age') return f"Привет, . Тебе лет!" if __name__ == '__main__': app.run()
В этом примере мы создаем простое веб-приложение Flask с маршрутом /example . Функция example получает параметры запроса name и age и возвращает персонализированное приветствие. Например, если вы откроете адрес http://localhost:5000/example?name=John&age=25 , вы получите ответ Привет, John. Тебе 25 лет!
2. Получение данных из формы
Для получения данных из формы HTML в Flask можно использовать метод request.form. Метод request.form позволяет получить данные, отправленные пользователем через форму, которая была отправлена на сервер.
from flask import Flask, request, render_template app = Flask(__name__) @app.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': name = request.form.get('name') email = request.form.get('email') return f"Спасибо за регистрацию, ! Вы указали адрес электронной почты: ." return render_template('register_form.html') if __name__ == '__main__': app.run()
В этом примере мы создаем страницу регистрации с HTML-формой. При отправке формы на сервер Flask, функция register получает данные из формы, такие как имя и электронная почта, и возвращает подтверждение регистрации с этими данными. Примечание: В данном примере используется функция render_template , которая отображает HTML-страницу с формой регистрации. Вам потребуется создать шаблон register_form.html в папке templates.
3. Получение данных из JSON
Flask также предоставляет возможность получения данных в формате JSON. Для этого используется метод request.get_json().
from flask import Flask, request app = Flask(__name__) @app.route('/data', methods=['POST']) def data(): json_data = request.get_json() name = json_data['name'] age = json_data['age'] return f"Привет, . Тебе лет!" if __name__ == '__main__': app.run()
В этом примере мы создаем маршрут /data , который принимает POST-запрос с данными в формате JSON. Функция data получает данные с помощью request.get_json() и возвращает сообщение с именем и возрастом из JSON-данных. Примечание: Для тестирования данного примера, вам потребуется использовать инструменты для отправки POST-запросов с данными в формате JSON, такие как cURL или Postman.
Заключение
Flask предоставляет различные способы получения данных от пользователя. В этой статье мы рассмотрели основные способы получения данных из строки запроса, из HTML-формы и в формате JSON. Каждый из этих методов имеет свои особенности и может быть использован в зависимости от требований вашего веб-приложения. Так что теперь вы знаете, как получить данные из входа Flask! Удачи в разработке своих веб-приложений!
Как получить данные из input flask: простые шаги и инструкции
Чтобы получить данные из входного запроса в Flask, вы можете использовать объект request . Он предоставляет доступ к различным свойствам запроса, включая параметры запроса, данные формы и JSON-данные. Для получения данных из формы вы можете использовать метод request.form . Например, если у вас есть поле ввода с именем «username» в вашей форме, вы можете получить его значение следующим образом:
username = request.form.get("username")
Если вы ожидаете JSON-данные в запросе, вы можете использовать метод request.get_json() . Например, если ваше приложение ожидает JSON-объект с полем «name», вы можете получить его значение так:
name = request.get_json().get("name")
Если вы хотите получить параметры запроса (GET параметры), вы можете использовать свойство request.args . Например, если ваш URL имеет параметр «id», вы можете получить его значение следующим образом:
id = request.args.get("id")
Детальный ответ
Как получить данные из input в Flask
Flask — это популярный фреймворк веб-приложений, написанный на Python. Он предоставляет простой и понятный способ создания веб-приложений с использованием языка программирования Python. В Flask существует несколько способов получения данных, отправленных пользователем через input формы. Давайте рассмотрим несколько примеров кода, чтобы лучше понять, как это делается.
Метод GET
Метод GET используется для получения данных из input формы, переданных через строки запроса URL. Вот пример кода, демонстрирующий, как получить данные с помощью метода GET в Flask:
from flask import Flask, request app = Flask(__name__) @app.route('/process_data', methods=['GET']) def process_data(): name = request.args.get('name') age = request.args.get('age') return f'Привет, ! Тебе лет.' if __name__ == '__main__': app.run()
В этом примере мы создаем маршрут ‘/process_data’ и указываем, что он доступен только через метод GET. Затем мы используем функцию request.args.get() для получения значений параметров ‘name’ и ‘age’ из строки запроса. Полученные значения затем используются для формирования ответа сервера.
Метод POST
Метод POST используется для передачи данных из input формы через тело запроса, а не через строки URL. Вот пример кода, демонстрирующий, как получить данные с помощью метода POST в Flask:
from flask import Flask, request app = Flask(__name__) @app.route('/process_data', methods=['POST']) def process_data(): name = request.form['name'] age = request.form['age'] return f'Привет, ! Тебе лет.' if __name__ == '__main__': app.run()
В этом примере мы создаем маршрут ‘/process_data’ и указываем, что он доступен только через метод POST. Затем мы используем функцию request.form[‘name’] и request.form[‘age’] для получения значений параметров ‘name’ и ‘age’ из тела запроса. Полученные значения затем используются для формирования ответа сервера.
JSON данные
Flask также позволяет получать данные в формате JSON. Вот пример кода, демонстрирующий, как получить JSON данные в Flask:
from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/process_data', methods=['POST']) def process_data(): data = request.get_json() name = data['name'] age = data['age'] return jsonify(! Тебе лет.'>) if __name__ == '__main__': app.run()
В этом примере мы используем функцию request.get_json() для получения JSON данных из тела запроса. Затем мы извлекаем значения параметров ‘name’ и ‘age’ из полученных данных и формируем ответ в формате JSON.
Форма с файлами
Если вы хотите получить файлы, отправленные пользователем через input форму, Flask также предоставляет способы для этого. Вот пример кода, показывающий, как получить файлы в Flask:
from flask import Flask, request app = Flask(__name__) @app.route('/process_file', methods=['POST']) def process_file(): file = request.files['file'] file.save('путь/к/сохранению/файла') return 'Файл успешно сохранен.' if __name__ == '__main__': app.run()
В этом примере мы создаем маршрут ‘/process_file’ и указываем, что он доступен только через метод POST. Затем мы используем функцию request.files[‘file’] для получения файла из input формы. Полученный файл затем сохраняется в указанном пути.
Заключение
В данной статье мы рассмотрели несколько способов получения данных из input формы в Flask. Мы изучили методы GET и POST, работу с JSON данными и получение файлов. Каждый из этих способов имеет свои особенности и может быть использован в зависимости от требований вашего веб-приложения. Изучите документацию Flask для более подробной информации и экспериментируйте с кодом, чтобы лучше понять, как работает каждый из этих способов.
Получение данных из запроса в приложении на Flask
В материале рассматривается работа с контекстом запроса в приложении на Flask и доступ к различным данным запроса, а именно доступ к полям формы, дополнительным параметрам URL-адреса, получение данных JSON, извлечения информации о User-Agent и IP-адреса клиента, получение referrer-URL и так далее.
Содержание:
- Доступ к параметрам, передаваемых в URL GET запросом.
- Доступ к данным формы, передаваемой POST запросом.
- Получение текущего URL-адреса страницы.
- Информация об окружении WSGI сервера.
- Получение данных в формате JSON.
- Другие полезные атрибуты объекта запроса:
- Заголовки, полученные вместе с запросом.
- Файлы cookie , переданных вместе с запросом.
- Реферальный URL-адрес.
- Сведения о пользовательском агенте.
Доступ к параметрам, передаваемых в URL GET запросом.
Параметры GET запроса, передаются в качестве параметров URL-адреса. Это та часть URL- адреса, которая расположена после знака вопроса, например http://example.ru/search?query=str.lower&opt=9 , параметрами запроса будут считаться query=str.lower&opt=9 . Такие адреса в основном используются в поисковых запросах, REST API сайта или в AJAX-запросах.
Для получения этих параметров необходимо воспользоваться свойством args входящего запроса flask.Request . По умолчанию, свойство request.args , представляет собой объект словаря, доступ к значениям параметров осуществляется по ключу request.args[‘opt’] Для безопасного извлечения ключей из словаря, что бы избежать исключений (при отсутствии ключа), можно воспользоваться методом dict.get() . Во Flask, синтаксис этого метода выглядит следующим образом:
request.args.get(key, default=None, type=None)
Где аргумент key — это ключ (имя параметра в URL); default — возвращаемое значение, если ключа key не существует. Пример извлечения параметров GET-запроса, если URL-адрес имеет вид http://example.ru/search?query=str.lower&opt=9 :
from flask import request @app.route('/search/', methods=['GET']) def search(): error = None query = request.args.get('query') # проверяем, передается ли параметр # 'query' в URL-адресе if query and query != '': # если `query`существует и это не пустая строка, # то можно приступать к обработке запроса opt = request.args.get('opt', default=0, type=int) # возвратит `query=str.lower, opt=9` return f"query=query>, opt=opt>" else: # если `query` не существует или это пустая строка, то # отображаем форму поискового запроса с сообщением. error = 'Не введен запрос!' return render_template('search.html', error=error)
Если важно сохранение порядка передаваемых параметров, то можно изменить тип данных, присвоив request.parameter_storage_class другой тип, например werkzeug.datastructures.ImmutableList .
Доступ к данным формы, передаваемой POST запросом.
Для доступа к данным формы (передаваемым в запросах POST или PUT ) нужно использовать атрибут входящего запроса request.form , который так же представляет собой словароподобный объект. Ключи request.form имеют значения атрибута name HTML-тэга в форме (например ).
Так как request.form представляет собой словароподобный объект, то к нему рекомендуется обращаться с помощью метода словаря dict.get() или путем перехвата KeyError и выдачи собственной страницы с ошибкой HTTP 404 Not Found .
В примере, для извлечения полей формы, воспользуемся методом request.args.get(key, default=None, type=None) . Предположим, что была передана форма авторизации пользователя на сайте:
from flask import request @app.route('/login', methods=['POST', 'GET']) def login(): error = None if request.method == 'POST': if valid_login(request.form.get('username'), request.form.get('password')): # если условие if выполнилось успешно, то 'username' # существует и дальше к нему можно обращаться как # к ключу словаря, что на много быстрее. return log_the_user_in(request.form['username']) else: error = 'Неверное имя пользователя или пароль' return render_template('login.html', error=error)
Мы так же рекомендуем осуществлять проверку передаваемой формы на стороне клиента с помощью javascript , это поможет убедиться, что входные данные с обязательным атрибутом к заполнению не пусты.
Примечание: объект запроса flask.Request еще содержит атрибут request.values , который объединяет в себе значения, передаваемые GET и POST запросами. Другими словами, используя request.values.get() можно получить доступ как к элементам передаваемой формы в HTML-полях , так и параметрам, передаваемым в URL-адресе.
Обратите внимание, что атрибут объекта запроса request.method содержит в себе строковое значение HTTP-метода.
Получение текущего URL-адреса страницы.
Так как URL-адрес может иметь переменные части, которые указываются в угловых скобках, иногда (например, в целях сбора статистики) необходимо получить его оригинал, что бы потом, в функции-представлении, не воссоздавать его вручную.
Объект запроса flask.Request позволяет это сделать. За URL-адрес в объекте запроса отвечают несколько атрибутов:
- request.url — полный URL-адрес запроса со схемой request.scheme , хостом request.host_url , корневым путем request.root_path , путем request.path и строкой запроса request.query_string .
- request.base_url — как request.url , но без строки запроса.
- request.url_root — URL-адрес со схемой request.scheme , хостом request.host_url , корневым путем request.root_path .
- request.scheme — схема URL-адресов ( http или https ).
- request.host — только хост, включая порт, если он доступен.
- request.root_path — префикс, под которым монтируется приложение, без завершающей косой черты (еще известен как environ[«SCRIPT_ROOT»] ).
- request.path — часть пути URL-адреса после root_path . Это путь, используемый для маршрутизации внутри приложения.
- request.full_path — запрошенный путь URL, включая строку запроса (параметры URL, после знака вопроса).
- request.query_string — часть URL-адреса после знака вопроса ‘?’ .
- request.url_charset — кодировка, которая предполагается для URL-адресов.
Разберем значение приведенных выше атрибутов объекта запроса на примере. Допустим, что приложение имеет следующий корень: http://www.example.com/myapp и пользователь запрашивает следующий URI-адрес: http://www.example.com/myapp/%CF%80/page.html?x=y
В этом случае значения вышеупомянутых атрибутов будут следующими:
- request.url : ‘http://www.example.com/myapp/π/page.html?x=y’ ;
- request.base_url : ‘http://www.example.com/myapp/π/page.html’ ;
- request.url_root : ‘http://www.example.com/myapp/’
- request.scheme : ‘http’ ;
- request.host : ‘www.example.com’ ;
- request.root_path : ‘/myapp’ ;
- request.path : ‘/π/page.html’ ;
- request.full_path : ‘/π/page.html?x=y’ ;
- request.query_string : x=y.
Информация об окружении WSGI сервера.
Если запуск и работоспособность приложение Flask обеспечивается WSGI сервером (например gunicorn ), то информацию об окружении этого сервера можно получить из атрибута объекта запроса request.environ . Этот атрибут представляет собой словарный объект и содержит информацию об окружении WSGI, а так же HTTP-заголовки, полученные вместе с запросом.
Переменные окружения WSGI сервера.
Из словарного атрибута запроса request.environ можно узнать очень много интересного, например реферальный URL-адрес (это адрес, с которого клиент перешел на текущий URL), его ключ в окружении ‘HTTP_REFERER’ . Возвращаемые ключи словарного объекта request.environ во многом зависят от того где работает и как настроен WSGI сервер, т.е. здесь все индивидуально.
Вот некоторые из них:
‘wsgi.version’, ‘PATH_INFO’ ‘HTTP_SEC_CH_UA’ ‘wsgi.url_scheme’ ‘QUERY_STRING’ ‘HTTP_SEC_CH_UA_MOBILE’ ‘wsgi.input’ ‘REQUEST_URI’ ‘HTTP_SEC_CH_UA_PLATFORM’ ‘wsgi.errors’ ‘RAW_URI’ ‘HTTP_UPGRADE_INSECURE_REQUESTS’ ‘wsgi.multithread’ ‘REMOTE_ADDR’ ‘HTTP_DNT’ ‘wsgi.multiprocess’ ‘REMOTE_PORT’ ‘HTTP_USER_AGENT’ ‘wsgi.run_once’ ‘SERVER_NAME’ ‘HTTP_ACCEPT’ ‘werkzeug.socket’ ‘SERVER_PORT’ ‘HTTP_REFERER’ ‘SERVER_SOFTWARE’ ‘SERVER_PROTOCOL’ ‘HTTP_ACCEPT_ENCODING’ ‘REQUEST_METHOD’ ‘HTTP_HOST’ ‘HTTP_ACCEPT_LANGUAGE’ ‘SCRIPT_NAME’ ‘HTTP_CONNECTION’ ‘HTTP_COOKIE’ Только не забывайте при обращении к словарному атрибуту request.environ , применять метод dict.get() , что бы избежать появления исключения, если какой-то ключ отсутствует.
Реальный IP-адрес клиента.
Переменные WSGI сервера необходимы, например, что бы узнать реальный IP-адрес посетителя сайта, если приложение Flask работает за прокси сервером, таким как Nginx. В ситуации с прокси, атрибут запроса request.remote_addr будет возвращать IP-адрес самого прокси сервера (т. е. локальный IP-адрес, на котором он работает, например 127.0.0.1), а не клиента. Реальный IP-адрес клиента можно узнать из окружения WSGI, обратившись к ключу ‘HTTP_X_FORWARDED_FOR’ или ‘X-Real-IP’ , это зависит, какая переменная использовалась при настройке Nginx:
# если `HTTP_X_FORWARDED_FOR` не определен, # то просто возвращаем `request.remote_addr` request.environ.get('HTTP_X_FORWARDED_FOR', request.remote_addr)
Примечание. Заголовок X-Forwarded-For (XFF) является де-факто стандартным заголовком для идентификации происхождения IP-адреса клиента, подключающегося к веб-серверу через HTTP-прокси или балансировщик нагрузки. Когда трафик перехватывается между клиентом и сервером, то журналы доступа к серверу содержат только IP-адрес прокси-сервера или балансировки нагрузки.
И вообще, при связке: прокси сервер -> WSGI сервер -> приложение Flask, максимум информации лучше брать из окружения request.environ , т.к. здесь она будет более правдива.
Получение данных в формате JSON.
Что бы извлечь JSON данные, передаваемые в запросе необходимо воспользоваться методом объекта запроса .get_json() , который имеет следующий синтаксис:
data = request.get_json(force=False, silent=False, cache=True)
- force : ( bool ) — игнорирует тип mimetype и всегда пытается анализировать JSON.
- silent : ( bool ) — отключает появление возможных ошибок при анализе JSON и если они происходят то возвращает None .
- cache : ( bool ) — сохраняет проанализированный JSON для последующих вызовов.
Если заголовок mimetype не указывает на JSON данные ( application/json ), то этот метод, по умолчанию ( force=False ), возвратит None .
Если синтаксический анализ JSON завершается неудачно, то вызывается функция request.on_json_loading_failed() , и в качестве возвращаемого значения используется ее значение.
Другие полезные атрибуты объекта запроса.
request.headers :
Атрибут объекта запроса request.headers содержит все заголовки, полученные вместе с запросом. Представляет собой словарный объект, следовательно, для безопасного получения заголовка можно воспользоваться методом словаря dict.get() :
request.headers.get('HEADER-NAME')
Если заголовок с именем ‘HEADER-NAME’ не существует то код выше вернет None (исключения не будет), поэтому его можно использовать в конструкции:
if request.headers.get('HEADER-NAME'): .
Но прямое обращение к ключу приведет к появлению исключения KeyError: ‘HEADER-NAME’
if request.headers['HEADER-NAME']: .
Если необходимо обращаться к request.headers без использования метода dict.get() , то используйте следующую конструкцию:
if 'HEADER-NAME' in request.headers: customHeader = request.headers['HEADER-NAME'] .
request.cookies :
Атрибут объекта запроса request.cookies содержит все файлы cookie , переданных вместе с запросом. Представляет собой словарный объект.
cookie = request.cookies.get('cookie-name'):
Методику работы с объектом request.cookies смотрите на примере request.headers
request.referrer :
Атрибут объекта запроса request.referrer содержит поле заголовка запроса, которое позволяет клиенту указать, в интересах сервера, адрес ресурса, с которого клиент перешел на текущий URL.
referrer = request.referrer # что эквивалентно получению заголовка referrer = request.headers.get('Referer')
request.user_agent :
Атрибут объекта запроса request.user_agent представляет собой данные заголовка, содержащие сведения о пользовательском агенте.
Чтобы получить значение заголовка, необходимо использовать выражение: request.user_agent.string .
agent_string = request.user_agent.string # что эквивалентно получению заголовка request.headers.get('User-Agent')
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Пример структуры приложения Flask как пакета Python
- Модульные приложения на схемах blueprint во Flask Python
- Фабрика веб-приложений модуля Flask
- Представления в веб-приложении на Flask Python
- Правила составления URL-маршрутов во Flask Python
- Использование шаблонизатора Jinja2 в приложении Flask Python
- Пользовательские страницы HTTP-ошибок на Flask Python
- Выполнение кода до или после запроса во Flask Python
- Загрузка файлов на сервер во Flask Python
- Всплывающие сообщения в приложении на Flask Python
- Извлечение данных из запроса во Flask Python
- Хранение и загрузка конфигураций Flask
- Параметры/ключи конфигурации, используемые во Flask
- Папки экземпляров приложений на Flask
- Контекст веб-приложения на Flask
- Контекст запроса приложения на Flask
- Ведение журнала логов в приложении Flask Python
- Собственные декораторы в приложении Flask Python
- Класс Config() модуля flask
- Функция redirect модуля flask
- Функция url_for() модуля flask
- Прокси-объект current_app() модуля flask
- Функция abort() модуля flask
- Отладочные сигналы приложения Flask
- Работа с cookie в приложении на Flask Python
- Безопасность веб-приложения на Flask
- Асинхронность в веб-приложении на Flask
- Использование URL-процессора в приложениях на Flask Python
- Диспетчеризация приложений на Flask
- Функция make_response модуля flask
- Доступность контекстов запроса/приложения во Flask Python
- Декоратор @route() и метод add_url_rule() приложения Flask Python
- Функция send_file() модуля flask
- Функция send_from_directory() модуля flask
- Как обслуживать статические файлы в Flask Python
- Функция render_template() модуля flask
- Класс Markup() модуля flask
- Отложенная загрузка представлений в приложении Flask Python
- Сессии/сеансы sessions модуля flask
- Глобальный объект flask.g в приложении Flask Python
- Класс Request() модуля flask
- Класс Response() модуля flask
- Класс Flask() модуля flask
- Тестирование приложений на Flask
- Использование SQLite 3 в приложении Flask Python
- Генерация своей капчи на сайте Flask
- Использование модуля WTForms в приложении Flask Python
- Расширение Flask-Caching для приложения Flask
- Расширение Flask-Assets, управление статикой приложения
- Расширение Flask-WTF для приложения Flask
- Расширение Flask-SQLAlchemy для приложения Flask
- Расширение Flask-Paginate для приложения Flask
- Расширение Flask-Mail для приложения Flask
- Расширение Flask-APScheduler
- Расширение Flask-HTTPAuth, базовая аутентификация во Flask
- Связка Nginx + Gunicorn + Gevent + Flask Python
- Как передать переменную NGINX во Flask environ
- Защита приложения/сайта от DDoS атак
- Расширение Flask-Login, управление сеансами пользователей