从 URL 中删除域名

Remove the domain name from URLs

我需要从具有不同架构的 URL 中删除域名。 url的例子:

http://www.example.org/cat1/page1
example.org/cat1/page1
https://www.example.org/cat1/page1

结果:

cat1/page1

它可以在 django 模板或视图上完成。

使用urlparse模块:

>>> from urlparse import urlparse
>>> o = urlparse('http://www.example.org/cat1/page1')
>>> o.path
'/cat1/page1'

请注意,example.org/cat1/page1 是有效路径,因此您无法从中删除域。作为解决方法,您可以手动将协议添加到 url 字符串:

>>> url  = 'example.org/cat1/page1'
>>> if not '//' in url:
...     url = 'http://' + url
... 
>>> o = urlparse(url)
>>> o.path
'/cat1/page1'

请求对象也有这个信息:

https://docs.djangoproject.com/en/1.7/ref/request-response/#module-django.http

HttpRequest.path 表示所请求页面的完整路径的字符串,不包括域。

示例:“/music/bands/the_beatles/”

这将使您获得当前页面的路径,因此它可能不适用于您的情况