在Django 1.8簡單標記中,我需要解析上下文中找到的HTTP_REFERER的路徑。我有一段可行的代碼,但我想知道是否可以使用Django工具實現更優雅的解決方案。Django:從完整的URL中提取路徑
這裏是我的代碼:
from django.core.urlresolvers import resolve, Resolver404
# [...]
@register.simple_tag(takes_context=True)
def simple_tag_example(context):
# The referer is a full path: http://host:port/path/to/referer/
# We only want the path: /path/to/referer/
referer = context.request.META.get('HTTP_REFERER')
if referer is None:
return ''
# Build the string http://host:port/
prefix = '%s://%s' % (context.request.scheme, context.request.get_host())
path = referer.replace(prefix, '')
resolvermatch = resolve(path)
# Do something very interesting with this resolvermatch...
所以我手動構建字符串「http://sub.domain.tld:port」,然後我從context.request.META
發現的完整路徑HTTP_REFERER刪除它。它的作品,但它似乎有點壓倒我。
我試圖從referer
建立一個HttpRequest
沒有成功。有沒有我可以用來從URL中輕鬆提取路徑的類或類型?
https://docs.python.org/2/library/urlparse.html#urlparse.urlunparse可能是有用的,但艾哈邁德的回答是最好的。 –