Flask: обработать любой url одним обработчиком
В flask
можно создавать обработчики запросов, например, следующим образом:
@app.route('/login', methods = ['POST', 'GET'])
def login():
pass
Но таким образом мне нужно указать url, на котором я слушаю (в примере /login
). А я хочу сделать обработчик, который будет вызываться по любому типу запроса на любой url (в том числе с любым количеством /
). Естественно, чтобы внутри обработчика я мог получить этот url. Как это можно сделать?
Ответы (1 шт):
Автор решения: Усердный бобёр
→ Ссылка
Нашёл ответ по ссылке от @andreymal https://stackoverflow.com/a/45777812. Чтобы получить полный путь включая часть после ?
, можно использовать request.full_path
. MRE:
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
return 'Path: ' + str(request.full_path)
if __name__ == '__main__':
app.run('localhost', 8080)