0

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

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

为此,我想写:

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

$_SERVER['HTTP_URI']在 Python 中是否有等价物。

4

3 回答 3

2

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

于 2012-04-29T19:13:53.200 回答
0

对于您的需求,django 提供站点框架叉

>>> 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'
于 2012-04-29T19:08:36.263 回答
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 - 以上方法是您的朋友。

于 2012-04-29T19:38:43.980 回答