【Django】IPアドレスを取得する

django

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 を上記メソッドに渡すと取得できます。

その他にも別の方法や、パッケージを使った処理など実装方法は色々あるようです。

タイトルとURLをコピーしました