Flask 使用参数重定向到外部 URL
Flask Redirect to External URL With Parameters
我想使用 flask 将用户重定向到带参数的外部 URL。我最近遇到 this post about redirect and url_for which only works for internal URLs, and this post that had a similar question about external URLs with parameters,但我无法将 HTTP 代码 307 用于我正在处理的 LTI 产品。后面的解决方案post也没有包含如何传递参数。
我知道 url_for
接受参数,但我不能将其用于外部 URL。
我想要类似这样的东西:
return redirect(f'{redirect_url}?lti_msg={message}<i_log={log}')
哪里
redirect_url = 'https://www.example.com' # external url
lti_msg = 'An example message' # parameter
lti_log = 'An example log message' # parameter
有没有办法将 URL 参数作为参数传递而不是使用 f 字符串?提前谢谢大家。
经过@Selcuk 的一些研究和指导,我能够使用 urllib.parse.urlencode
来实现它
导入:
from urllib.parse import urlencode
用法:
redirect_baseUrl = 'https://www.example.com' # external url
lti_msg = 'An example message' # parameter
lti_log = 'An example log message' # parameter
parameters = dict(lti_msg=message, lti_log=log)
redirect_url = redirect_baseUrl + ("?" + urlencode(parameters) if parameters else "")
return redirect(redirect_url)
注意:使用我在问题中使用的格式,当其中一个参数中有特殊字符(例如&
)时,会导致传递的数据不完整。 urlencode
完美解决了这个问题
我想使用 flask 将用户重定向到带参数的外部 URL。我最近遇到 this post about redirect and url_for which only works for internal URLs, and this post that had a similar question about external URLs with parameters,但我无法将 HTTP 代码 307 用于我正在处理的 LTI 产品。后面的解决方案post也没有包含如何传递参数。
我知道 url_for
接受参数,但我不能将其用于外部 URL。
我想要类似这样的东西:
return redirect(f'{redirect_url}?lti_msg={message}<i_log={log}')
哪里
redirect_url = 'https://www.example.com' # external url
lti_msg = 'An example message' # parameter
lti_log = 'An example log message' # parameter
有没有办法将 URL 参数作为参数传递而不是使用 f 字符串?提前谢谢大家。
经过@Selcuk 的一些研究和指导,我能够使用 urllib.parse.urlencode
导入:
from urllib.parse import urlencode
用法:
redirect_baseUrl = 'https://www.example.com' # external url
lti_msg = 'An example message' # parameter
lti_log = 'An example log message' # parameter
parameters = dict(lti_msg=message, lti_log=log)
redirect_url = redirect_baseUrl + ("?" + urlencode(parameters) if parameters else "")
return redirect(redirect_url)
注意:使用我在问题中使用的格式,当其中一个参数中有特殊字符(例如&
)时,会导致传递的数据不完整。 urlencode
完美解决了这个问题