ローカルで動かしているDjangoのサイトをスマホから見る方法
Django プロジェクトの動作確認について
Django でプロジェクトを作成しているとき runserver コマンドで動作確認をすると思いますが、スマホや他のPCでも確認したいですよね。
テストサーバを構築してデプロイしてスマホ等から確認するという方法もありますが、そこまでするのは正直めんどくさいですよね。
実は runserver コマンドで同一のローカルネットワーク上の他の機器から Django のサイトに接続する方法があるのです。
テストサーバを立てるほどのものではないようなプロジェクトの動作確認にはとても便利な方法です。
手順
手順としては次の通りです。
- ホスト側(Django のプロジェクトを実行する PC )のローカルIPアドレスを固定する
- settings.py の ALLOWED_HOSTS に固定したローカルIPアドレスを追加
- runserver コマンド実行時に固定したローカルIPアドレスを指定
- ホストと同一のローカルネットワーク上にある他の機器(スマホ等)から接続
ローカルIPアドレスの固定は下記の記事を参照してください。
【Windows】ローカルIPアドレスを固定してみよう
settings.pyは以下のようにします。
ALLOWED_HOSTS = ["127.0.0.1", "192.168.2.11"] # 固定したローカルIPアドレスを追加
runserver コマンドは以下のようにします。
> python manage.py runserver 192.168.2.11:8000
※この例ではローカルIPアドレスを 192.168.2.11 としていますが、適宜読み替えてください。
基本的にはこれだけで行けるはずなんですが、私の環境ではなぜかなかなかスマホから接続できず少しハマってしまいました。
色々調べてみるとセキュリティソフトのファイアウォールが他の機器からホスト側へのアクセスを弾いていたことが分かりました。
使用しているセキュリティソフトによって違うと思いますが、ESET Internet Securityというソフトを使用しているとファイアウォールが他の機器からのアクセスを弾いてしまいます。
そのため、ファイアウォールの設定を変更する必要があります。
ファイアウォールの設定を変更する(ESET Internet Security編)
ESET Internet Security を起動したら [ 設定 ] を選択する。
[ ネットワークの保護 ] → [ ファイアウォール ] の右側にある歯車アイコン → [ 設定 ] と選択。
[ 詳細 ] → [ ルール ] の右側にある [ 編集 ] と選択。
[ 追加 ] を選択。
[ 一般 ] タブの以下の項目を設定する。
・方向:双方向
・アクション:許可
・プロトコル:TCPおよびUDP
[ ローカル ] タブの以下の項目を設定する。
・ポート:Djangoに使用するポート(特にこだわりがなければ8000でいいと思います)
・IP:固定したローカルIPアドレス
後は [ OK ] ボタンで設定を反映させれば完了です。
スマホで接続してみる
一通り設定が完了したら、ホストと同一のネットワーク上にあるスマホ等からDjangoサイトに接続してみましょう。
スマホのブラウザのアドレスバーに runserver コマンド実行時に入力したホストのローカルIPアドレス : ポートを入力すると接続できるはずです。