编辑:你能仔细阅读我的问题吗?这个问题是具体的,而不是已经说过的duplicated。显然,我在发帖前读过这篇question。在
在这个来自docs的演示代码中,lang参数后面的片段将是静态的。所以,用英语/en/about
,比如葡萄牙语/pt/about
。正确的,应该是/pt/sobre
。在
有没有关于正确的方法来使用URL处理器?在
from flask import Flask, g
app = Flask(__name__)
@app.url_defaults
def add_language_code(endpoint, values):
if 'lang_code' in values or not g.lang_code:
return
if app.url_map.is_endpoint_expecting(endpoint, 'lang_code'):
values['lang_code'] = g.lang_code
@app.url_value_preprocessor
def pull_lang_code(endpoint, values):
g.lang_code = values.pop('lang_code', None)
@app.route('/<lang_code>/')
def index():
...
@app.route('/<lang_code>/about')
def about():
好的,你已经有了语言前缀。所以下一部分你需要几个翻译。在
最简单的方法是使用多种路径或转换器:
或者
^{pr2}$但是很难支持和添加新的语言。在
第二种方法是改变路径方法来翻译特殊单词或添加特殊的翻译处理器转换器,最后一种更有趣和更含蓄:
^{3}$但这个例子还有下一个问题:
是有效的URL,但您也可以尝试使用自己的
Rule
类(Flask.url_rule_class
),在match
方法中可以处理以下情况:如果要简化
url_for
的用法,可以使用下一个示例:相关问题 更多 >
编程相关推荐