DjangoのViewでホスト名を取得する方法。
GenericViewを使っている場合は関数の中でself.request.get_host()
もしくは、 self.request._current_scheme_host
をします。
例えばこんな感じです。
class SampleView(ListView):
model = User
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['SCHEMA_HOST_NAME'] = self.request._current_scheme_host
context['HOST_NAME'] = self.request.get_host()
return context
GenericViewを使わずにrequestを使っている場合はそのままrequest.get_host()
request._current_scheme_host
でホスト名を取得できます。
request.get_host()
とrequest._current_scheme_host
の違いはプロトコルの有無です。
- request.get_host(): 例 0.0.0.0:8888/
- request._current_scheme_host:例 http://0.0.0.0:8888/
状況に応じて使い分けが必要ですが、ローカルはhttp
で本番環境はhttps
に切り替えるとかそういう事を考えなくていいので個人的にはrequest._current_scheme_host
を利用することが多いです。
コメントを残す