Python flask get запросы

Flask HTTP methods, handle GET & POST requests

Flask has different decorators to handle http requests. Http protocol is the basis for data communication in the World Wide Web.

Different methods for retrieving data from a specified URL are defined in this protocol. The following table summarizes the different http methods:

Request Purpose
GET The most common method. A GET message is send, and the server returns data
POST Used to send HTML form data to the server. The data received by the POST method is not cached by the server.
HEAD Same as GET method, but no response body.
PUT Replace all current representations of the target resource with uploaded content.
DELETE Deletes all current representations of the target resource given by the URL.

Flask HTTP Methods

Form

By default, the Flask route responds to GET requests.However, you can change this preference by providing method parameters for the route () decorator.

To demonstrate the use of a POST method in a URL route, first let us create an HTML form and use the POST method to send form data to the URL.

Save the following script as login.html

html>
body>
form action = «http://localhost:5000/login» method = «post»>
p>Enter Name: p>
p>input type = «text» name = «nm»/> p>
p>input type = «submit» value = «submit»/> p>
form>
body>
html>

GET and POST requests

To handle both GET and POST requests, we add that in the decorator app.route() method.
Whatever request you want, you cahnge it in the decorator.

Читайте также:  Xml query in java

Enter the following script in the Python shell.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from flask import Flask, redirect, url_for, request
app = Flask(__name__)

@app.route(‘/success/’)
def success(name):
return ‘welcome %s’ % name

@app.route(‘/login’,methods = [‘POST’, ‘GET’])
def login():
if request.method == ‘POST’:
user = request.form[‘nm’]
return redirect(url_for(‘success’,name = user))
else:
user = request.args.get(‘nm’)
return redirect(url_for(‘success’,name = user))

if __name__ == ‘__main__’:
app.run(debug = True)

Once the development server is up and running, open login.html in the browser, enter the name in the text field, and then click Submit.

post flask form

The form data will POST to the URL in the action clause of the form label.

localhost/login image to the login() function. Because the server receives data through the POST method, the value of the “nm” parameter obtained from the form data is obtained by following these steps:

It is passed as part of the variable to the ‘/success’ URL. The browser displays a welcome message in the window.

flask welcome message

Change the method parameter to ‘GET’ in login.html, and then open it again in the browser. The data received on the server is obtained through the GET method. Get the value of the ‘nm’ parameter by:

Here, args are dictionary objects that contain the pair of form parameters and the list of their corresponding value pairs. The value corresponding to the ‘nm’ parameter is passed to the ‘/success’ URL as before.

Python To Web — Your Python App online

Источник

Обработка данных в Flask

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

Если взглянуть «под капот» сайтов, то окажется, что программная реализация работы с запросами подвержена одной общей логике:

  1. Принять запрос.
  2. Выбрать обработчика запроса.
  3. Выполнить обработчика.
  4. Отправить клиенту ответ.

Фреймворк — это один из инструментов разработчика для реализации логики приложения.

Flask — это микрофреймворк для создания сайтов на языке Python. Приставка «микро» означает, что это небольшой фреймворк с ограниченным количеством базовых инструментов, которых, тем не менее, достаточно для реализации большинства сайтов. Flask отлично подойдет для реализации API или сайта на облачном сервере . В этой статье мы создадим приложение Flask и расскажем о базовых аспектах обработки входящих данных.

Начало работы

Мы будем использовать PyCharm + pipenv на Windows 10. В интернете достаточно руководств для установки такого комплекта на другие операционные системы. А здесь расскажем, как установить его на Win 10.

Установите Python:

Переходим на официальный сайт www.python.org/downloads/ , выбираем версию Python под нашу операционную систему, скачиваем и устанавливаем, следуя всем инструкциям инсталлятора.

Установите pipenv:

Pipenv — это пакет управления виртуальным окружением python. Для того, чтобы скачать его открываем командную строку Windows и выполняем вот эту команду:

Установите PyCharm

PyCharm — это среда разработки для языка программирования Python. Чтобы её установить, заходим на официальный сайт www.jetbrains.com/ru-ru/pycharm/ , выбираем версию Community (или Professional, если вы готовы оформить подписку), скачиваем и устанавливаем, также следуя инструкциям установщика.

Создание проекта

В левом верхнем углу нажимаем «File» -> «New Project»:

  • 1 — каталог будущего проекта;
  • 2 — выбор пакета окружения;
  • 3 — путь к базовому интерпретатору Python;
  • 4 — путь к исполняемому файлу pipenv;

После того, как настроили и указали все необходимые параметры, нажимаем «Create».

Важно! Необходимо, чтобы в путях не было каталогов с названиями на кириллице — это может привести к ошибке.

Установите Flask

После создания проекта нажимаем на кнопку “Terminal” в нижней части среды разработки и выполняем эту команду:

Если вы выполнили правильно все шаги до этого момента, то начнется загрузка Flask.

При возникновении ошибки «Выполнение сценариев в этой системе отключено» необходимо запустить терминал PowerShell от имени администратора и выполнить в нём команду Set-ExecutionPolicy RemoteSigned. После чего ввести [A].

Работа с URL

После установки необходимых компонентов можно перейти к непосредственному с взаимодействию с фреймворком. Сначала импортируйте Flask:

Напишем небольшое приложение Flask , на основе которого продемонстрируем работу с URL запросами:

from flask import Flask

app = Flask(__name__)

@app.route("/timeweb")
def timeweb():
return "Это страница /timeweb"

@app.route("/blog")
def blog():
return "Это страница /blog"

@app.route("/cloud")
def cloud():
return "Это страница /cloud"

if __name__ == "__main__":
app.run()

Прокомментируем подробнее, что делает этот код:

  • В первую очередь мы импортируем Flask;
  • Затем мы создаем экземпляр app класса Flask;
  • Теперь описываем декоратор .route для каждого отдельного URL: при обработке того или иного URL будет вызываться соответствующая функция;
  • Для запуска приложения используем .run();

Теперь запустим его. В консоли мы можем найти адрес нашего локального сайта:

Перейдем по нему и… ничего не получим:

Такой результат мы получили из-за того, что не описали декоратор для URL-запроса, содержащего только корневой путь «/». Теперь попробуем перейти по другим URL-адресам, для которых описали необходимые декораторы и функции:

Также при каждом подключении в консоль выводится информация о нём:

В этом случае мы использовали и обрабатывали GET-запрос — получали информацию из URL. Но обработка данных входящих запросов в Flask этим не ограничивается. Теперь попробуем получить из URL-запроса перечень различной информации.

GET

С помощью URL-запроса можно передавать серверу различные аргументы (они же query-параметры). Наверняка вам приходилось видеть в запросах знак вопроса. Знак вопроса в URL-запросе означает, что после него идут аргументы. Предположим, у нас есть такой запрос:

timeweb.com/blog?framework=flask&language=python&version=3.10

В этом запросе переданы пары ключ-значение через амперсанд. Если разобрать этот запрос на части, то мы получим такие пары:

framework=flask
language=python
version=3.10

Напишем функцию get_example(), которая произведет извлечение данных из запроса в Flask Python , а в качестве ответа будет ответа сообщение с полученным данными:

from flask import request

@app.route("/get_example")
def get_example():
framework = request.args.get('framework')

language = request.args.get('language')

version = request.args.get('version')

return "language = <>;framework = <>; version = <> ".format(language, framework, version)
  1. Импортирует класс request и его методы;
  2. Описывает декоратор для URL /get_example;
  3. Разбивает запрос на значения и присваивает их соответствующим ключам;
  4. Отправляет в качестве ответа три пары ключ-значение;

Теперь перейдем по этому адресу http://127.0.0.1:5000/get_example?language=python&framework=flask&version=3.10 :

Как видим, код правильно обработал запрос.

POST

По умолчанию .route() обрабатывает только GET-запросы. В flask можно обрабатывать и POST-запросы. Добавим в наше приложение flask формы авторизации логин-пароль:

@app.route('/authorization', methods=['GET', 'POST'])
def authorization():

if request.method == 'POST':
Login = request.form.get('Login')
Password = request.form.get('Password')

if Login=="admin" and Password=="admin":
return "Correct"
else:
return "Incorrect"

return '''

Login:

Password:


'''

Подробно распишем работу этого декоратора в приложении на Flask:

  • Указываем в аргументах декоратора, что обработка запросов связана как с GET, так и с POST;
  • Сначала срабатывает запрос GET (последний return): выводим форму для логина и пароля;
  • После ввода в поля логина и пароля декоратор получает запрос POST с данными и обрабатывает их;
  • Если логин и пароль верные, то возвращаем сообщение «Correct»;
  • Если логин и пароль неверные, то возвращаем сообщение «Incorrect»;

Перейдем по 127.0.0.1:5000/authorization и проверим работу декоратора:

Вот полный код нашего приложения:

from flask import Flask

app = Flask(__name__)

@app.route("/timeweb")
def timeweb():
return "Это страница /timeweb"

@app.route("/blog")
def blog():
return "Это страница /blog"

@app.route("/cloud")
def cloud():
return "Это страница /cloud"

from flask import request

@app.route("/get_example")
def get_example():
framework = request.args.get('framework')

language = request.args.get('language')

version = request.args.get('version')

return "language = <>;framework = <>; version = <> ".format(language, framework, version)

@app.route('/authorization', methods=['GET', 'POST'])
def authorization():

if request.method == 'POST':
Login = request.form.get('Login')
Password = request.form.get('Password')
if Login=="admin" and Password=="admin":
return "Correct"
else:
return "Incorrect"

return '''

Login:

Password:


'''

if __name__ == "__main__":
app.run()

Заключение

В этой статье мы рассмотрели способы обработки информации, поступающей на сервер от клиента, с помощью микрофреймворка Flask: как в виде запросов GET, так и POST. Но, необходимо помнить, что мы не рассмотрели важный аспект обработки — безопасность сервера. При работе с данными от клиента нужно всегда их проверять на наличие ошибок или вредоносных элементов. Профилактика — это лучший способ уберечь сервер от нежелательных последствий.

Источник

Оцените статью