我看到Flask在Request中提供了一些parsed fields,但是该网址是在删除转义符之后的.在Flask完成转义之前,有什么方法可以访问URL?
例如,当其他客户请求“ http://www.example.com/my_url%20is%20here?arg1=2&?arg2=3”时,Flask向我提供了“ http://www.example.com/my_url在这里”的request.base_url,其中用空格代替.我可以自己引用它,以在有人回复时获得原始URL,但是最好是我希望访问原始URL,因为它是由客户端发送的,而不是派生它.
解决方法:
字段不是URLs, or even URIs,而是IRI.使用iri_to_uri:
from werkzeug.urls import iri_to_uri
iri_to_uri(request.url)
"""
...
Note that the string returned might contain unicode characters as the
representation is an IRI not an URI. If you need an ASCII only
representation you can use the :func:`~werkzeug.urls.iri_to_uri`
function:
>>> from werkzeug.urls import iri_to_uri
>>> iri_to_uri(get_current_url(env))
'http://localhost/script/?param=foo'
...
"""
flask和werkzeug的优点之一是,您始终可以在源代码中始终遵循这些内容.