Django でリクエストのあったクライアントのIPアドレスを取得する方法の紹介です。
リバースプロキシも対応しています。
IPアドレスを取得
def get_client_ip(cls, request):
if not request or not request.META:
# METAが含まれていない場合は取得できない
return None
xff = request.MEATA.get("HTTP_X_FORWARDED_FOR")
ip = None
if xff:
# 転送要素がある場合は転送経路の先頭を設定
ip = xff.split(",")[0]
else:
# 通常のIPアドレス
ip = request.META.get("REMOTE_ADDR")
return ip
View で取得できる request を上記メソッドに渡すと取得できます。
その他にも別の方法や、パッケージを使った処理など実装方法は色々あるようです。