python - Flask 使用参数重定向到外部 URL
问题描述
我想使用烧瓶将用户重定向到带有参数的外部 URL。我最近遇到了这篇关于 redirect 和 url_for 的文章,它只适用于内部 URL,而这篇文章也有关于带参数的外部 URL 的类似问题,但我不能将 HTTP 代码 307 用于我正在开发的 LTI 产品。后一篇文章中的解决方案也没有包括如何传递参数。
我知道它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
完美解决了这个问题
推荐阅读
- python - selenium.common.exceptions.WebDriverException:消息:newSession?
- laravel - 使用 renatomarinho / laravel-page-speed 包后 jQuery 不工作?
- php - 如果 WooCommerce 短代码没有返回任何产品,则显示一条消息
- javascript - 在 Angular 中更新组件数据时出现问题
- angular - Angular prerender i18n 混淆
- html - 在卡片上正确放置图像
- django - DJANGO PWA 安装到主屏幕不起作用
- sdl - SDL_DestroyWindow() 和 SDL_Quit() 的意义何在?
- java - setDisplayHomeasUpEnabled 可能会产生 null PointerException
- javascript - 使用 jQuery 验证接受数字和特殊字符