使用Flas创建一个在webapp上切换语言的GET请求

2024-04-25 22:33:20 发布

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

如果我现在搜索'本地主机:5000/?lang=en'或'本地主机:5000/?我可以在两种语言之间切换。我用巴别塔翻译。现在我写了这样的应用程序:

LANGUAGES = ['en', 'sv']

app = Flask(__name__)
app.config["BABEL_DEFAULT_LOCALE"] = LANGUAGES[0]
babel = Babel(app)

@babel.localeselector
def get_locale():
    if request.args.get("lang"):
        session["lang"] = request.args.get("lang")
    return session.get("lang", LANGUAGES[0])

@app.route("/", methods=['GET'])
def index():
    return render_template("index.html", me=me)

在html文件中

^{pr2}$

我知道这不是一个好办法,但老实说,我不知道怎么做否则。Here我找到了一个我应该如何解决它的例子,但我做了它如此不同,许多小时后,我放弃了这样做的尝试。在

让我满意的是

A button that add the text '/?lang=sv' when I press it if it now is 'en' and reverse if current lang is 'sv'

现在已经实现了(除了我有两个按钮而不是一个按钮),但是如果我输入类似'本地主机:5000/?lang=sdfsdf'我得到的错误代码是500,我不相信是特别好的允许,我真的不知道我应该在哪里添加逻辑来防止它,我也知道在我心里这是不正确的做法!但这是我能想出的最好的办法。在


Tags: applanggetindexreturnifrequestsession
1条回答
网友
1楼 · 发布于 2024-04-25 22:33:20

您可以使用单选按钮来选择感兴趣的语言,而不是使用提交按钮。在这种情况下,错误代码500并不是坏事。您无法处理输入,错误代码500表示服务器无法处理请求。您可以为500个错误添加自定义页,也可以签入服务器端代码。索引函数可以添加查询参数的检查,并进行适当的处理,而不仅仅是返回呈现的模板。在

if(LANGUAGES.index(request.args.get("lang")) != -1):
   # do something like set the session['lang'] = 'en'

相关问题 更多 >