Учебники

Flask — перенаправление и ошибки

Класс Flask имеет функцию redirect () . При вызове он возвращает объект ответа и перенаправляет пользователя в другое целевое местоположение с указанным кодом состояния.

Прототип функции redirect () показан ниже:

Flask.redirect(location, statuscode, response)

В вышеуказанной функции —

  • Параметр location — это URL-адрес, по которому должен быть перенаправлен ответ.

  • код состояния отправляется в заголовок браузера, по умолчанию 302.

  • Параметр response используется для создания экземпляра ответа.

Параметр location — это URL-адрес, по которому должен быть перенаправлен ответ.

код состояния отправляется в заголовок браузера, по умолчанию 302.

Параметр response используется для создания экземпляра ответа.

Следующие коды состояния стандартизированы —

  • HTTP_300_MULTIPLE_CHOICES
  • HTTP_301_MOVED_PERMANENTLY
  • HTTP_302_FOUND
  • HTTP_303_SEE_OTHER
  • HTTP_304_NOT_MODIFIED
  • HTTP_305_USE_PROXY
  • HTTP_306_RESERVED
  • HTTP_307_TEMPORARY_REDIRECT

Код состояния по умолчанию302 , что означает «найдено» .

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

from flask import Flask, redirect, url_for, render_template, request
# Initialize the Flask application
app = Flask(__name__)

@app.route('/')
def index():
   return render_template('log_in.html')

@app.route('/login',methods = ['POST', 'GET'])
def login():
   if request.method == 'POST' and
   request.form['username'] == 'admin' :
   return redirect(url_for('success'))
   return redirect(url_for('index'))

@app.route('/success')
def success():
   return 'logged in successfully'
	
if __name__ == '__main__':
   app.run(debug = True)

Класс Flask имеет функцию abort () с кодом ошибки.

Flask.abort(code)

Параметр Code принимает одно из следующих значений:

  • 400 — за плохой запрос

  • 401 — для неаутентифицированных

  • 403 — для Запрещенного

  • 404 — для не найден

  • 406 — неприемлемо

  • 415 — для неподдерживаемого типа носителя

  • 429 — Слишком много запросов

400 — за плохой запрос

401 — для неаутентифицированных

403 — для Запрещенного

404 — для не найден

406 — неприемлемо

415 — для неподдерживаемого типа носителя

429 — Слишком много запросов

Давайте сделаем небольшое изменение в функции login () в приведенном выше коде. Вместо того, чтобы повторно отображать страницу входа, если должна отображаться страница «Несанкционированный» , замените ее вызовом для отмены (401) .