私はPythonとDjangoフレームワークを使用しています。ハイパーリンクを使用したい場合、完全なURLを手動で記述すべきではありませんか?ドメイン名を返す関数を使用し、ドメイン名へのパスを手動で連結する必要があります。では、どうすればドメイン名を取得できますか?
好き:
このために、私は書きたいです:
"http://"+somefunction()+"/path/to/file.ext"
$_SERVER['HTTP_URI']
Pythonに相当するものはありますか?
私はPythonとDjangoフレームワークを使用しています。ハイパーリンクを使用したい場合、完全なURLを手動で記述すべきではありませんか?ドメイン名を返す関数を使用し、ドメイン名へのパスを手動で連結する必要があります。では、どうすればドメイン名を取得できますか?
好き:
このために、私は書きたいです:
"http://"+somefunction()+"/path/to/file.ext"
$_SERVER['HTTP_URI']
Pythonに相当するものはありますか?
現在のリクエストの元のホストについては、を使用するrequest.get_host()
か、直接アクセスできますrequest['HTTP_HOST']
。
あなたのニーズに合わせて、djangoはSitesframeforkを提供しています
>>> 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'
質問に直接答えることはありませんが、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を作成することは望ましくありません。上記の方法はお友達です。