gpt4 book ai didi

python - flask 实现?争论而不是/

转载 作者:行者123 更新时间:2023-11-28 17:32:44 25 4
gpt4 key购买 nike

我正在尝试实现重定向,以便在我的用户在菜单栏上选择特定语言时将其带回他们之前的页面。

我有这个功能:

@application.route('/locale/<locale>/redirect_to/<redirect_to>/', methods=['GET'])
def set_locale(locale, redirect_to):
session['locale'] = locale
return redirect(redirect_to) # Change this to previous url

现在我的语言选项有这个:

<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
<li><a href="{{ url_for("set_locale", locale="en", redirect_to=request.path) }}">English</a></li>
<li><a href="{{ url_for("set_locale", locale="es", redirect_to=request.path) }}">Spanish</a></li>
</ul>

但是,我一直遇到错误,因为 request.path 的格式为/some/url/like/this/并且它一直在搞乱 redirect_to 参数,我可能会收到路径未定义等错误。

传统上,开发人员使用 ?redirect_to=/home 来解决这个问题。但是,我不知道是否有一种正确的方法可以在 flask 中实现 ?key=value 模式,而不会使它变得如此不完整,以至于当我改变它时它会崩溃。

如何在这里轻松实现 ?key=value 模式?

最佳答案

任何传递给 url_for 的不属于路由的关键字参数都将包含在查询字符串中。

<a href="{{ url_for('set_locale', locale='en', redirect_to=request.path) }}">

您的端点然后更改为类似于

@application.route('/locale/<locale>/')
def set_locale(locale):
session['locale'] = locale
redirect_to = request.args.get('redirect_to', '/')
return redirect(redirect_to)

代价是您不能在路由中强制执行 redirect_to,因此您需要自己处理。这里我默认为'/'。另一种方法是

redirect_to = request.args['redirect_to']

如果 redirect_to 不包含在查询字符串中,这将导致 Flask 返回 400 错误请求响应。

关于python - flask 实现?争论而不是/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33211481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com