我完全不知道你所说的“不同的行为”的意思,但如果你能找出共同的逻辑,那么你可以使用这个:
# In your blueprint file
def get_blueprint(param):
blueprint = Blueprint('my blueprint', __name__)
@blueprint.route('/')
def index():
return "This is a common page."
if param == 'a':
@blueprint.route('/param')
def param():
return "This is the param a!"
elif param == 'b':
@blueprint.route('/param')
def param():
return "This is the param b!"
return blueprint
# In your app
app = Flask(__name__)
app.register_blueprint(get_blueprint('a'), url_prefix='/param/a')
app.register_blueprint(get_blueprint('b'), url_prefix='/param/b')
这样,你能避免做一个if语句对于每个检查url的请求。
是的,这是我的观点#2,如果蓝图有很多路线做'@ blueprint.route'会让'get_blueprint'非常大 – sashab