我刚开始玩 Flask,所以很可能我只是错过了一些明显的东西,但对于其他也在寻找相同答案的人来说,这可能是个很好的问题 :)
我想创建 Flask 应用程序,它将监听多语言 URL。所以我想要的是一个端点将在/news/111 上监听,就像在/naujiena/111 上一样(例如立陶宛语)。
所以一个明显的解决方案是为 View 函数提供一些路由,例如:
@app.route('/news/<id>')
@app.route('/naujiena/<id>')
def news_view(id): pass
这应该可行,但显然在(一些私密的地方)稍后添加新语言或只是更新链接会很痛苦。
我想到的另一个解决方案是,我可以有一个文件,我在其中定义真实 View 函数,然后是一些“语言 View ”文件,我只在其中获取请求,然后从其他文件查询真实 View 函数。喜欢
新闻.py
def news_view(id): pass
news_zh.py
from news import news_view
@app.route('/news/<id>')
def news_view_en(id):
return news_view(id)
news_lt.py
from news import news_view
@app.route('/naujiena/<id>')
def news_view_lt(id):
return news_view(id)
这还不错,至少可以以某种方式很好地组织起来。但我敢打赌应该有一些我想念的东西:)那么伙计们,那是什么? :) 欢迎提出任何建议。
谢谢!
最佳答案
您可以使用 add_url_rule()
函数动态路由 URL:
view_functions = [news_view, foo_view, bar_view]
for view in ['news', 'foo', 'bar']:
for translation in translations[view]:
app.add_url_rule('/{}/'.format(translation), view, view_functions[view])
关于python - flask 中的多语言网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11814582/