Djangoのテストサーバーに他のPCから接続する時の設定
Djangoをインストールして、/home/userid/(~/)で
django-admin startproject mysite
でジェネレート。
python manage.py runserver```
でテスト用にhttpサーバーを起動する所までは公式ドキュメント読みながらすぐに出来ると思います。
けど、サーバーを別のマシンや仮想環境で立ち上げると、他のPCからはアクセス出来ません。
そこで公式ドキュメント
https://docs.djangoproject.com/ja/3.0/intro/tutorial01
を見ると
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136856/6dc6e6b8-e84b-1c17-7a4f-251732dc2177.jpeg" width=95% />
のように書いてあります。
```python manage.py runserver 0:8000```
その通りに立ち上げて他のPCからアクセスすると、ALLOWED_HOSTSにIPを追加しろと怒られます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136856/75c38fe3-2d14-5098-fe8f-1c3d2845a61f.jpeg" width=80% />
ここでその通りに ~/mysite/mysite/settings.py に追加すると、ちゃんと空のページが表示されます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136856/6074bd20-8b7a-2459-a5c6-aa30e11fba81.jpeg" width=50% />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136856/791d40fa-989d-48dd-b437-5815f6afb725.jpeg" width=80% />
公式ドキュメントの説明が間違っているのでこうなります。
正解は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を指定して、リクエストを通してあげる必要があります。