Python flask中的多语言URL

Python flask中的多语言URL,python,web,flask,multilingual,Python,Web,Flask,Multilingual,我刚开始玩Flask,所以很可能我错过了一些明显的东西,但也许这对其他人来说也是一个不错的问题,寻找相同的答案:) 我想创建Flask应用程序,它将侦听多语言URL。因此,我想要的是,一个端点将在/news/111上收听与/naujiena/111(例如立陶宛语)相同的内容 因此,一个明显的解决方案是为视图函数提供一些路由,如: @app.route('/news/<id>') @app.route('/naujiena/<id>') def news_view(id):

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

我想创建Flask应用程序,它将侦听多语言URL。因此,我想要的是,一个端点将在/news/111上收听与/naujiena/111(例如立陶宛语)相同的内容

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

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

from news import news_view
@app.route('/news/<id>')
def news_view_en(id):
    return news_view(id)
从新闻导入新闻\u视图
@app.route(“/news/”)
def新闻视图(id):
返回新闻视图(id)
新闻

from news import news_view
@app.route('/naujiena/<id>')
def news_view_lt(id):
    return news_view(id)
从新闻导入新闻\u视图
@应用程序路径('/naujiena/'))
def新闻视图(id):
返回新闻视图(id)
这并不坏,至少可以很好地组织起来。但我打赌我一定会错过一些东西:)那么,伙计们,那是什么?:)欢迎提出任何建议

谢谢

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

这太酷了!谢谢Blender,我说我错过了一些聪明的东西:)@Paolocascello:创建这些路由后,请查看
app.url\u map
。@Blender使用您的代码,您将得到具有多个url的相同端点。在模板中或编写url时,如果为调用url_并传递端点,则会选择最后添加的端点。为了使这种方法起作用,我通常使用这种语言编写端点。这样我就可以调用everywhere url_('endpoint_u'+lang,…)来获得正确的url:)这很酷!谢谢Blender,我说我错过了一些聪明的东西:)@Paolocascello:创建这些路由后,请查看
app.url\u map
。@Blender使用您的代码,您将得到具有多个url的相同端点。在模板中或编写url时,如果为调用url_并传递端点,则会选择最后添加的端点。为了使这种方法起作用,我通常使用这种语言编写端点。这样我就可以调用everywhere url_for('endpoint_u'+lang,…)来获得正确的url:)