0Pricing
Python Academy · Урок

Формы и данные запросов

Обрабатывайте пользовательский ввод

«Формы и данные запросов» — бесплатный урок Python Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Объект request

Flask предоставляет каждому представлению доступ к глобальному объекту request, содержащему все входящие данные: поля формы, параметры запроса, JSON, заголовки и многое другое.

from flask import Flask, request
app = Flask(__name__)
# request is available inside any view
print('request carries the incoming data')

Параметры строки запроса

Данные после ? в URL находятся в request.args. Используйте .get(), чтобы безопасно прочитать значение.

from flask import Flask, request
app = Flask(__name__)

@app.route('/search')
def search():
    term = request.args.get('q', '')
    return 'Searching for ' + term
print('/search?q=cats -> request.args')

HTML-форма

Форма отправляет данные при отправке. Атрибуты method и action определяют способ и место отправки.

# <form method='POST' action='/login'>
#   <input name='username'>
#   <input name='password' type='password'>
#   <button>Submit</button>
# </form>
print('Form posts username and password')

Чтение данных формы

Отправленные поля формы поступают в request.form. Обращайтесь к ним по атрибуту name элемента ввода.

from flask import Flask, request
app = Flask(__name__)

@app.route('/login', methods=['POST'])
def login():
    user = request.form['username']
    return 'Welcome ' + user
print('request.form holds posted fields')

Безопасный доступ с помощью get

Использование request.form['x'] вызывает ошибку, если ключ отсутствует. Предпочтительнее использовать request.form.get('x'), которое вместо этого возвращает None.

from flask import Flask, request
app = Flask(__name__)

@app.route('/login', methods=['POST'])
def login():
    user = request.form.get('username')
    if not user:
        return 'Missing username', 400
    return 'Welcome ' + user
print('.get avoids KeyError')

GET и POST в одном представлении

Распространённый шаблон: показывать форму при GET и обрабатывать данные при POST — всё в одном представлении.

from flask import Flask, request, render_template
app = Flask(__name__)

@app.route('/contact', methods=['GET', 'POST'])
def contact():
    if request.method == 'POST':
        return 'Thanks, ' + request.form.get('name', 'friend')
    return render_template('contact.html')
print('One view, two methods')

Проверка входных данных

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

from flask import Flask, request
app = Flask(__name__)

@app.route('/age', methods=['POST'])
def age():
    raw = request.form.get('age', '')
    if not raw.isdigit():
        return 'Age must be a number', 400
    return 'Age is ' + raw
print('Validate before trusting input')

Чтение JSON

Клиенты API часто отправляют JSON. request.get_json() разбирает тело запроса в словарь Python.

from flask import Flask, request
app = Flask(__name__)

@app.route('/api', methods=['POST'])
def api():
    data = request.get_json()
    return 'Got name ' + data.get('name', '?')
print('get_json parses the JSON body')

Загрузка файлов

Загруженные файлы находятся в request.files. Сохраните один из них с помощью его метода .save() после проверки.

from flask import Flask, request
app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload():
    f = request.files.get('photo')
    if f:
        return 'Received ' + f.filename
    return 'No file', 400
print('request.files holds uploads')

Перенаправление после POST

После обработки формы перенаправьте пользователя, чтобы избежать повторной отправки при обновлении страницы. Используйте redirect(url_for(...)).

from flask import Flask, redirect, url_for
app = Flask(__name__)

@app.route('/done')
def done():
    return 'All done'

@app.route('/save', methods=['POST'])
def save():
    return redirect(url_for('done'))
print('Post/Redirect/Get pattern')

Flash-сообщения

flash() сохраняет одноразовое сообщение, показываемое после перенаправления. Это удобно для подтверждений вроде «Успешно сохранено».

from flask import Flask, flash, redirect, url_for
app = Flask(__name__)
app.secret_key = 'change-me'

@app.route('/save', methods=['POST'])
def save():
    flash('Saved successfully')
    return redirect(url_for('save'))
print('flash shows a one-time message')

Проверка

Проверьте свои знания об обработке форм.

Повторение

Вы научились обрабатывать пользовательские данные во Flask.

  • request.args используется для параметров строки запроса, а request.form — для полей формы
  • request.get_json() используется для JSON-тел, а request.files — для загружаемых файлов
  • Всегда проверяйте входные данные и используйте .get() для безопасного доступа
  • Используйте схему Post/Redirect/Get и flash() для удобного взаимодействия с приложением

Часто задаваемые вопросы

Урок «Формы и данные запросов» бесплатный?

Да — полный текст урока «Формы и данные запросов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Формы и данные запросов»?

Обрабатывайте пользовательский ввод Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Формы и данные запросов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Маршруты и представления
  2. Шаблоны с Jinja2
  3. Формы и данные запросов
  4. Создание REST-конечной точки
← Назад к Python Academy