2012-04-29 13 views
0

私はPythonとDjangoフレームワークを扱っています。ハイパーリンクを使用する場合は、完全なURLを手作業で書くべきではありませんか?ドメイン名を返す関数をいくつか使用し、パスを手動で連結する必要があります。だから、どのようにしてドメイン名を取得できますか?
ように:このため

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

は、私が書きたい:

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

Pythonで$_SERVER['HTTP_URI']の同等があります。あなたのニーズに合わせて

+0

HTTP_HOSTまたはHTTP_URI? – Gumbo

+0

@ramesh kumarこれは、Apache/Nginx HTTPの設定によっても異なる場合があります。 –

答えて

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

を提供しています、あなたはrequest.get_host()を使用するか、直接request['HTTP_HOST']にアクセスすることができました。

0

あなたの質問に直接答えはしませんが、DjangoにはあなたのためにURL構築を処理する方法がたくさんあるので、ハードコードする必要はありません。一般

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

:(それらが必要だ比較的まれに)絶対URLを構築

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

:テンプレート内

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

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

:あなたのPythonコード内

あなたは手動のURL構築をしたくない - 上記の方法はあなたの友人です。

関連する問題