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

Dav*_*542 24 python django

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

url = request.META['HTTP_HOST']
    + request.META['PATH_INFO']
    + request.META['QUERY_STRING']
Run Code Online (Sandbox Code Playgroud)

有类似的东西request.META['URL']吗?

Yog*_*tpl 32

您可以使用request.build_absolute_uri方法获取完整的URL:

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("/")
Run Code Online (Sandbox Code Playgroud)

这应该对你有所帮助.

在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
Run Code Online (Sandbox Code Playgroud)

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