0

我想使用 os.environ 获取完整的 URL。我正在使用 voila 渲染笔记本,我想使用 URL 中的参数从仪表板打开 url。

到目前为止,我有:

URL_BASE = os.environ.get('SCRIPT_NAME')
PARAMETERS = os.environ.get("QUERY_STRING")
print(f'{URL_BASE=}')
print(f'{PARAMETERS=}')

假设这是网址:

https://flyingcar.org/john/voila/render/shared/users/j/john/learn_url.ipynb?redirects=2&name=john&dossier=SA123445#{whatever=no/f=5}

URL_BASE="flyingcar.org/john/voila/render/shared/users/j/john/learn_url.ipynb"
&
PARAMETERS="redirects=2&name=john&dossier=SA123445"

查看 os.environ 中的整个 var 集合,我看不到任何包含整个 url(包括 # 之后的内容)以解析该部分以及参数的内容。

captured_values = parse_qs(PARAMETERS)
print('here parse_qs of query:',captured_values)
>>> here parse_qs of query: {'d': ['34'], 'f': ['56']}

一些想法?

我尝试使用以下命令打印所有 os.environ 变量:

for k,v in os.environ.items():
    print(k,v)

但它似乎没有包含 URL 中 # 符号之外的内容有什么想法吗?谢谢

相关: 在 Python 中获取当前 URL

4

1 回答 1

0

URI 的片段 (#) 部分永远不会离开用户代理,因此 python Web 服务器无法获取它。见:https ://datatracker.ietf.org/doc/html/rfc3986#page-24

...相反,片段标识符在取消引用之前与 URI 的其余部分分开,因此片段本身的标识信息仅由用户代理取消引用,而与 URI 方案无关。

于 2022-01-04T12:05:39.730 回答