【Django】Viewでホスト名を取得する方法

【Django】Viewでホスト名を取得する方法

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を利用することが多いです。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください