Flask 如何将默认参数传递到url_?

Flask 如何将默认参数传递到url_?,flask,jinja2,translation,url-for,python-babel,Flask,Jinja2,Translation,Url For,Python Babel,我开发多语言网站。 页面的URI如下所示: /RU/about /EN/about /IT/about /JP/about /EN/contacts 我在jinja2模板中写道: <a href="{{ url_for('about', lang_code=g.current_lang) }}">About</a> 使用app.url\u defaults在构建url时提供默认值。使用app.url\u value\u预处理器自动从url提取值。这在中进行了描

我开发多语言网站。 页面的URI如下所示:

/RU/about

/EN/about

/IT/about

/JP/about

/EN/contacts
我在jinja2模板中写道:

<a href="{{ url_for('about', lang_code=g.current_lang) }}">About</a>

使用
app.url\u defaults
在构建url时提供默认值。使用
app.url\u value\u预处理器
自动从url提取值。这在中进行了描述

现在('about')的
url\u将生成
/RU/about
,并且
g.lang\u code
将在访问url时自动设置为RU


为处理语言提供更强大的支持

@app.route('/<lang_code>/about/')
def about():
...
@app.url_defaults
def add_language_code(endpoint, values):
    if 'lang_code' in values:
        # don't do anything if lang_code is set manually
        return

    # only add lang_code if url rule uses it
    if app.url_map.is_endpoint_expecting(endpoint, 'lang_code'):
        # add lang_code from g.lang_code or default to RU
        values['lang_code'] = getattr(g, 'lang_code', 'RU')

@app.url_value_preprocessor
def pull_lang_code(endpoint, values):
    # set lang_code from url or default to RU
    g.lang_code = values.pop('lang_code', 'RU')