Я некоторое время копался в 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>')
В файле 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/
(без языка), я получаю ошибку 404. Обычный — поскольку проект ожидает lang_code в качестве префикса.
В первый раз, когда пользователь переходит на http://localhost:5000/
(без языка), я ожидаю, что сайт покажет страницы с языком «fr». Если затем пользователь переключит его на английский и перейдет к http://localhost:5000/
, я бы хотел, чтобы он отображался на английском, но не на французском. Кажется, это не работает !!!
'/'
. Все маршруты чертежа начинаются с'/<lang_code>'
. - person dirn   schedule 26.11.2014