0

フラスコを使用して、ユーザーをパラメーター付きの外部 URL にリダイレクトしたいと思います。最近、内部 URL でのみ機能するリダイレクトと url_for に関するこの投稿と、パラメーターを使用した外部 URL に関する同様の質問があるこの投稿に出くわしましたが、私が取り組んでいる LTI 製品では HTTP コード 307 を使用できません。後者の投稿の解決策には、パラメーターを渡す方法も含まれていませんでした。

が引数を受け入れることは知っていurl_forますが、それを外部 URL に使用することはできません。

私はこれに似たものが欲しい:

return redirect(f'{redirect_url}?lti_msg={message}&lti_log={log}')

どこ

redirect_url = 'https://www.example.com' # external url
lti_msg = 'An example message' # parameter
lti_log = 'An example log message' # parameter

f-strings を使用する代わりに、URL パラメーターを引数として渡す方法はありますか? よろしくお願いします。

4

1 に答える 1

0

@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)

注:質問で使用した形式を使用する&と、パラメーターの1つに特殊文字などの特殊文字が含まれている場合に不完全なデータが渡されます。urlencodeこの問題に完全に対処

于 2021-04-30T01:09:05.457 に答える