у меня есть требование, когда я хочу, чтобы все маршруты определенного плана были перенаправлены на внешнюю веб-страницу.
В приведенном ниже примере я бы хотел, чтобы "/Store", "/Store/home", "/Store/products" были перенаправлены, скажем, на "google.com". в реальном сценарии может быть несколько маршрутов, сопоставленных с одним планом я бы хотел, чтобы другой план «/Online» остался нетронутым.
Вариант использования здесь заключается в том, что эти модули (маршруты blueprint1) были перемещены в другой домен, и я бы хотел, чтобы пользователи перенаправлялись, если они посещают любой из URL-адресов с префиксом «Магазин».
Кто-нибудь знает какую-либо функцию/обходной путь, который можно использовать для достижения этой цели?
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)
Используйте 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')