我已经在 Flask-babel 周围挖掘了一段时间,但似乎无法url routing
通过简单的方式获得blueprint
. 这是精简的应用程序
在我的__ init __.py 文件上,
app = Flask(__name__)
babel.init_app(app)
@babel.localeselector
def get_locale():
return g.get('lang_code', 'fr')
from .mod_main import mod_main as main_blueprint
app.register_blueprint(main_blueprint,url_prefix='/<lang_code>')
在蓝图views.py文件中
@mod_main.url_defaults
def add_language_code(endpoint, values):
values.setdefault('lang_code', g.lang_code)
@mod_main.url_value_preprocessor
def pull_lang_code(endpoint, values):
g.lang_code = values.pop('lang_code')
@mod_main.route('/', methods=['GET', 'POST'])
def index():
return render_template('main/index.html')
只要我导航到http://localhost:5000/fr
但当我导航到http://localhost:5000/
(没有 lang)时,我得到 404 错误。正常 - 因为蓝图需要一个 lang_code 作为前缀。
当用户第一次导航到http://localhost:5000/
(没有 lang)时,我希望该站点以“fr”的语言显示页面。如果用户然后将其切换到英语并导航到http://localhost:5000/
,我希望它以英语而不是法语显示。似乎无法让这个工作!