Djangoのテストサーバーに他のPCから接続する時の設定
Djangoをインストールして、/home/userid/(~/)で
django-admin startproject mysite
でジェネレート。
cd mysite
python manage.py runserver
でテスト用にhttpサーバーを起動する所までは公式ドキュメント読みながらすぐに出来ると思います。
けど、サーバーを別のマシンや仮想環境で立ち上げると、他のPCからはアクセス出来ません。
そこで公式ドキュメント
https://docs.djangoproject.com/ja/3.0/intro/tutorial01
を見ると
のように書いてあります。
python manage.py runserver 0:8000
その通りに立ち上げて他のPCからアクセスすると、ALLOWED_HOSTSにIPを追加しろと怒られます。
ここでその通りに ~/mysite/mysite/settings.py に追加すると、ちゃんと空のページが表示されます。
公式ドキュメントの説明が間違っているのでこうなります。
正解はALLOWED_HOSTSにサーバー(HOST)のIPを登録して
python manage.py runserver 192.168.29.218:8000
のように登録したIPで起動する、です。
なぜ?
公式ドキュメントの「すべてのIPから」が間違い。
正しくは「サーバーのすべてのIPで」待ち受ける、です。この時IPに0を指定します。
でないと、サーバーのローカルIP(127.0.0.1)でしかリクエストを受け付けられなくなります。
他のPCからつなぐ時はサーバーのIPを指定しますから、サーバー側も待ちうけIPを指定して、リクエストを通してあげる必要があります。