有没有办法在 Flask 中定义带有可选 URL 参数的 URL?本质上,我想做的是定义允许可选指定语言的规则:
/
/de -> matches / (but doesn't collide with /profile)
/profile
/de/profile
我想我已经找到了一种方法来做到这一点,但这涉及到改变 Werkzeug 和 Flask 处理请求的方式(猴子修补或分叉框架源)。不过,这似乎是处理这个问题的一种过于复杂的方法。有没有更简单的方法可以做到这一点而我忽略了?
编辑:
根据布赖恩的回答,这就是我想出的:
应用程序.py:
from loc import l10n
def create_app(config):
app = Flask(__name__)
app.config.from_pyfile(config)
bp = l10n.Blueprint()
bp.add_url_rule('/', 'home', lambda lang_code: lang_code)
bp.add_url_rule('/profile', 'profile', lambda lang_code: 'profile: %s' %
lang_code)
bp.register_app(app)
return app
if __name__ == '__main__':
create_app('dev.cfg').run()
本地/l10ln.py
class Blueprint(Blueprint_):
def __init__(self):
Blueprint_.__init__(self, 'loc', __name__)
def register_app(self, app):
app.register_blueprint(self, url_defaults={'lang_code': 'en'})
app.register_blueprint(self, url_prefix='/<lang_code>')
self.app = app
(我还没有lang_code
从变量列表中提取,但很快就会这样做)
现在这只是热的恕我直言。