如何从django请求获取完整的URL

时间:2014-11-18 07:45:37

标签: python django

是否有更好的方法来获取django中的完整URL而不是执行以下操作:

url = request.META['HTTP_HOST']
    + request.META['PATH_INFO']
    + request.META['QUERY_STRING']

有类似request.META['URL']的内容吗?

3 个答案:

答案 0 :(得分:27)

您可以使用request.build_absolute_uri方法获取完整网址:

FULL_URL_WITH_QUERY_STRINg: request.build_absolute_uri()
FULL_URL: request.build_absolute_uri('?')
ABSOLUTE_ROOT: request.build_absolute_uri('/')[:-1].strip("/")
ABSOLUTE_ROOT_URL: request.build_absolute_uri('/').strip("/")

这对你有用吗。

在Django中使用ABSOLUTE URLS的最佳方法是,你可以创建一个context_processors或中间件,找到你的ABSOLUTE_URL并返回它,以便你可以使用django中的任何位置。

就像这个例子:

def absolute(request):
    urls = {
        'ABSOLUTE_ROOT': request.build_absolute_uri('/')[:-1].strip("/"),
        'ABSOLUTE_ROOT_URL': request.build_absolute_uri('/').strip("/"),
    }

    return urls

然后你应该在你的django模板的任何地方使用{{ABSOLUTE_ROOT}}。

答案 1 :(得分:17)

答案 2 :(得分:0)

  

在模板中可以使用,以防万一:P

{{ request.META.PATH_INFO }}
相关问题