相当于Python中PHP的$ _SERVER ['HTTP_HOST'],或者在python django中获取域名

时间:2012-04-29 19:00:08

标签: python django

我正在使用Python和Django框架。当我想使用超链接时,我不应该手动编写完整的URL吗?我必须使用一些返回域名的函数,并手动连接它的路径。那么,我怎样才能获得域名?
像:

  

http://www.domain.com/path/to/file.ext

为此,我想写:

"http://"+somefunction()+"/path/to/file.ext" 

Python中是否有等效的$_SERVER['HTTP_URI']

3 个答案:

答案 0 :(得分:2)

对于当前请求的原始主机,您可以使用request.get_host()或直接访问request['HTTP_HOST']

答案 1 :(得分:0)

根据您的需要,django提供Sites framefork

>>> from django.contrib.sites.models import Site
>>> Site.objects.get_current().domain
'example.com'
>>> 'http://%s/path/to/file.ext' % Site.objects.get_current().domain
'http://example.com/path/to/file.ext'

答案 2 :(得分:0)

不直接回答您的问题,但Django有许多方法可以为您处理URL构造,因此您无需对其进行硬编码。

在Python代码中:

from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect

def my_redir_view(request):
    return HttpResponseRedirect(reverse('another_view'))

在模板中:

<a href="{% url 'logout' %}">Logout</a>

构建绝对URL(在极少数情况下需要它们):

redirect_uri = request.build_absolute_uri(reverse('openid_auth'))

一般来说,您不希望进行手动URL构建 - 上述方法是您的朋友。