#python #flask
#python #flask
Вопрос:
у меня есть требование, в соответствии с которым я хочу, чтобы все маршруты определенного плана были перенаправлены на внешнюю веб-страницу.
Для приведенного ниже примера я бы хотел, чтобы «/ Store», «/ Store / home», «/ Store / products» были перенаправлены, скажем, на «google.com «. в реальном сценарии может быть несколько маршрутов, сопоставленных с одним планом, я бы хотел, чтобы другой план «/ Online» не был затронут.
Здесь используется вариант использования, в котором эти модули (маршруты blueprint1) были перемещены в другой домен, и я бы хотел, чтобы пользователи перенаправлялись, если они посещают какой-либо URL-адрес с префиксом ‘Store’
Кто-нибудь знает какую-либо функцию / обходной путь, который можно использовать для достижения этой цели?
from flask import Flask
from flask import Blueprint
app = Flask(__name__)
blueprint1 = Blueprint('example_blueprint', __name__)
blueprint2 = Blueprint('example_blueprint2', __name__)
@app.route('/')
def index():
return "this is from root"
@blueprint1.route('/')
def index_b1():
return "This is default route of blue print1"
@blueprint1.route('/home')
def index_b2():
return "This is homepage of blue print"
@blueprint1.route('/products')
def index_b3():
return "This is productpage of blue print"
@blueprint2.route('/')
def index_o1():
return "This is default route of blue print 2"
app.register_blueprint(blueprint1,url_prefix='/Store')
app.register_blueprint(blueprint2,url_prefix='/Online')
if __name__ == "__main__":
app.run(debug=True)
Ответ №1:
Используйте after_request (или before_request)
@blueprint1.after_request
def after_request_func(response):
return redirect('https://www.pythonkitchen.com')
@blueprint2.after_request
def after_request_func(response):
return redirect('https://www.pythonkitchen.com')