如何在python,django中将url解码为路径

Posted

技术标签:

【中文标题】如何在python,django中将url解码为路径【英文标题】:How to decode url to path in python, django 【发布时间】:2014-12-16 19:06:59 【问题描述】:

嗨,我需要将 url 转换为路径,我得到的是这个 url,如下所示:

url = u'/static/media/uploads/gallery/Marrakech%2C%20Morocco_be3Ij2N.jpg'

以及看起来像这样的东西:

path = u'/static/media/uploads/gallery/Marrakech, Morocco_be3Ij2N.jpg'

谢谢。

【问题讨论】:

【参考方案1】:

使用 python 3.9django 3.2

解决方案 1:

import urllib
urllib.parse.unquote(url)

解决方案 2:

from django.utils.encoding import uri_to_iri
uri_to_iri(url)

【讨论】:

【参考方案2】:

如果你使用 Python3 你可以写

urllib.parse.unquote(url)

【讨论】:

【参考方案3】:

使用urllib.unquote解码%编码的字符串:

>>> import urllib
>>> url = u'/static/media/uploads/gallery/Marrakech%2C%20Morocco_be3Ij2N.jpg'
>>> urllib.unquote(url)
u'/static/media/uploads/gallery/Marrakech, Morocco_be3Ij2N.jpg'

使用urllib.quoteurllib.quote_plus,可以返回:

>>> urllib.quote(u'/static/media/uploads/gallery/Marrakech, Morocco_be3Ij2N.jpg')
'/static/media/uploads/gallery/Marrakech%2C%20Morocco_be3Ij2N.jpg'

【讨论】:

请注意,在 Python 3 中,这是在模块 urllib.parse 中。 @Humphrey,问题被标记为python-2.7

以上是关于如何在python,django中将url解码为路径的主要内容,如果未能解决你的问题,请参考以下文章

如何在django中将多个参数传递给url

如何在 django 2 中将 url 中的 # 作为参数传递

如何在 Python 中将“原始”字符串转换为“解码”字符串?

如何在python中将dbus.Array从at解码为十六进制或字符串

如何在 Django urls.py 中将 url 参数传递给 reverse_lazy

如何在可重用的应用程序中将命名空间 url 与 django 一起使用