【发布时间】:2014-11-26 01:56:02
【问题描述】:
我已经在 Flask-babel 周围挖掘了一段时间,但似乎无法通过简单的 blueprint 获得 url routing。这是精简后的应用程序
在我的 __ 初始化 __.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>')
在 blueprint 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/(不带语言)时,我希望该网站显示语言为“fr”的页面。如果用户然后将其切换到英语并导航到http://localhost:5000/,我希望它以英语而不是法语显示。似乎无法正常工作!!!
【问题讨论】:
-
您没有为
'/'注册的路由。蓝图的所有路由都以'/<lang_code>'开头。
标签: python flask url-for python-babel flask-babel