Djangoで開発用サーバーにChromeなどでアクセスできないときの対処方法

こんにちは。

佐賀県はコロナの影響もそれほど大きくはないですが、全国的には大問題になっているところですね。

さて、そんな中ですが、DjangoというPythonでWEBアプリを開発するフレームワークがあるのですが、こちらで開発をしているときに、開発用サーバーにChromeなどでアクセスすることができないということがありましたので解決方法をあげておきたいと思います。

 

たとえば、こんな感じになります。

Djangoの開発用サーバーを立ち上げるコマンドである、

python manage.py runserver

を叩いたときの症状です。

Djangoで開発用サーバーを立ち上げてもブラウザからアクセスできない
Djangoで開発用サーバーを立ち上げてもブラウザからアクセスできない

 

このまま開発用サーバーである、127.0.0.1:8000にChromeなどでアクセスをしても下記の画像の通りにしか表示されないのではないでしょうか。

 

Djangoの開発用サーバーでアクセスしたときのブラウザの表示
Djangoの開発用サーバーでアクセスしたときのブラウザの表示

 

 

これは、Chromeなどではhttpsアクセスが標準化しているためにアクセスができないということになってしまっています。

今のところ、私の手元にあるブラウザではほとんどがアクセスすることができません。

 

というわけで、これをhttps化してしまえばOKということです。

サーバーにデプロイするときには、もちろんSSL証明などを取得してSSL化には対応するかと思います。ここでは、ローカル環境(DockerやVagrantなどを使用しないケース)での話を前提にしております。単純に、これだけのためにDockerの環境を導入するのは・・・と思っていらっしゃる方へ向けての解決策になります。

 

 

【 解決策 】

これを解決するための方法としては単純なんですが、django-sslserverというのをインストールしてあげれば大丈夫です!

 

pip install django-sslserver

 

 

簡単ですね。

 

そして、このライブラリを使うことをDjango側へ教えてあげる必要があります。

 

settings.pyを開いて、INSTALLED_APPSのところに追加してください。

INSTALLED_APPS = [
    'accounts.apps.AccountsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'sslserver', # 追加
]

Djangoではお約束ですね。

 

でもこれだけでは開発用サーバーがSSL化されません。

SSLで開発用サーバーを立ち上げるためには、以下のコマンドでサーバーを立ち上げてください。

 

python manage.py runsslserver

 

これでSSL化されたサーバーを立ち上げることができたかと思います。

Django SSL化を対応
Django SSL化を対応

 

 

ただし、これはあくまで開発用サーバーを立ち上げるときの話なので、本番環境ではきちんとSSL証明書を取得してそれをNginxなりApacheなどに読み込ませてくださいね

 

 

コメントを残す