flas中的多语言url

2024-10-03 00:28:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始玩烧瓶,所以很可能我错过了一些显而易见的东西,但也许对其他人来说这可能是个不错的问题,寻找同样的答案:)

我想创建一个Flask应用程序,它可以监听多种语言的url。所以我想要的是,一个端点将监听/news/111,与for/naujiena/111相同(例如立陶宛语)。在

因此,一个明显的解决方案是给视图函数提供一些路径,例如:

@app.route('/news/<id>')
@app.route('/naujiena/<id>')
def news_view(id): pass

这应该是有效的,但是很明显,以后添加新语言或只是更新链接会很痛苦。在

我脑海中的另一个解决方案是,我可以在一个文件中定义real view函数,然后在一些“language view”文件中获取请求,然后从其他文件中查询real view函数。像

在新闻.py在

^{pr2}$

新闻_英语在

from news import news_view
@app.route('/news/<id>')
def news_view_en(id):
    return news_view(id)

新闻_中尉在

from news import news_view
@app.route('/naujiena/<id>')
def news_view_lt(id):
    return news_view(id)

这还不错,而且at leats可以组织得很好。但我敢打赌我会错过一些东西:)那么伙计们,那是什么?:)欢迎提出任何建议。在

谢谢!在


Tags: 文件函数fromimportviewidappreturn
1条回答
网友
1楼 · 发布于 2024-10-03 00:28:56

您可以使用^{}函数动态路由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])

相关问题 更多 >