是否有更好的方法来获取django中的完整URL而不是执行以下操作:
url = request.META['HTTP_HOST']
+ request.META['PATH_INFO']
+ request.META['QUERY_STRING']
有类似request.META['URL']
的内容吗?
答案 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)
您可以使用:
request.build_absolute_uri()
答案 2 :(得分:0)
在模板中可以使用,以防万一:P
{{ request.META.PATH_INFO }}