English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Методы HTTP Flask

HTTP-протокол является основой для передачи данных в Интернете. Он определяет методы извлечения различных данных из указанного URL.

В таблице ниже приведены различные методы HTTP -

НомерМетодОписание
1GETДанные передаются на сервер в незашифрованном виде, это наиболее часто используемый метод.
2HEADКак и GET, но без тела ответа
3POSTИспользуется для отправки данных HTML-формы на сервер. Данные, полученные с помощью метода POST, не сохраняются на сервере.
4PUTЗаменить все текущие представления целевого ресурса загруженным содержимым.
5DELETEУдалить все ресурсы, указанные в URL, и все их представления

По умолчанию, маршруты Flask отвечают на запросы GET. Однако, можно изменить этот параметр, предоставив метод в декораторе route().

Чтобы продемонстрировать использование метода POST в URL-маршрутизации, сначала создайте HTML-форму и отправьте данные формы на URL с помощью метода POST.

Сохраните следующий скрипт в файл: login.html

# Файл: example.py
# Авторские права: 2020 By w3codebox
# Автор: ru.oldtoolbag.com
# Дата: 2020-08-08
<html>
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     <title>Обработка HTTP-запросов Flask</title>
 </head>
    <body>
       <form action="http://localhost:5000/login" method="post">
          <p>Введите имя:</p>
          <p><input type="text" name="name" value=""/></p>
          <p><input type="submit" value="Подтвердить"/></p>
       </form>
    </body>
 </html>

Теперь в Python shell введите следующую скрипт.

# Файл: example.py
# Авторские права: 2020 By w3codebox
# Автор: ru.oldtoolbag.com
# Дата: 2020-08-08
from flask import Flask, redirect, url_for, request
 app = Flask(__name__)
 @app.route('/success/<name>')
 def success(name):
     return 'welcome %s' % name
 @app.route('/login', methods=['POST', 'GET'])
 def login():
     if request.method == 'POST':
         user = request.form['name']
         return redirect(url_for('success', name=user))
     else:
         user = request.args.get('name')
         return redirect(url_for('success', name=user))
 if __name__ == '__main__':
     app.run(debug = True)

После запуска разработчика сервера откройте login.html в браузере, введите имя (например,) maxsu ) и нажмите Отправить.

Формулярные данные отправляются на URL, указанный в атрибуте action тега <form>.

http://localhost:5000/login маппинг к функции login(). Поскольку данные были получены от сервера через метод POST, значение параметра 'name' можно получить из данных формы следующим образом -

# Файл: example.py
# Авторские права: 2020 By w3codebox
# Автор: ru.oldtoolbag.com
# Дата: 2020-08-08
user = request.form['name']

Он передается как переменная часть в URL:/success. Браузер отображает приветственное сообщение в окне.

Измените параметр метода в login.html на GET и откройте его в браузере снова. Полученные на сервере данные передаются через метод GET. Значение параметра 'name' теперь можно получить следующим образом -

# Файл: example.py
# Авторские права: 2020 By w3codebox
# Автор: ru.oldtoolbag.com
# Дата: 2020-08-08
User = request.args.get('name')

Здесь, args является объектом словаря, который содержит множество параметров форм и их соответствующие значения. Как и раньше, значение, соответствующее параметру 'name', передается в URL:/success.