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



コメントを残す