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などに読み込ませてくださいね

 

 

Wagtail PythonでCMSを実装してみる

今回、CMSの調査をしていまして、出てきたWagtailを使ってみました。その際の簡単な説明だけ残しておこうと思います。

まずプロジェクトであがってきたのはDjangoを使用してCMSを搭載させれるかどうかということでした。そのためのパッケージもあるようです。ですが、調べていたらどうやらWagtailの方がいいのかどうかということでいったん使い勝手的なところ調査しました。

以下、説明していきます。

 

1.インストール

まずはインストールからですが、これは問題ないのではないかと思います。ただ、私が勘違いしていたのははじめにDjangoのプロジェクトを設定してからWagtailをいれると思っていましたが、公式ドキュメントをみて「あれ??」ということで単純にPythonの仮想環境を作成してそこにWagtailを落としてきました。

********************

2.プロジェクト作成

次に、プロジェクト作成です。ここでもちょっとはまりました。

こちらのサイトをみていたのですが、

wagtail start mysite mysite

 

これでは作成できませんでした。

以下のようなエラーが返ってきました。

Creating a Wagtail project called cms
CommandError: Destination directory 'C:\cms\cms' does not exist, please create it first.

 

そこで、DjangoでもLaravel でもなんでもそうかと思いますが、使えるコマンドを確認することができるので、試してみることに。

(myvenv) C:\cms>wagtail
Type 'wagtail help <subcommand>' for help on a specific subcommand.

Available subcommands:

    start               Creates the directory structure for a new Wagtail project.
    updatemodulepaths   Update a Wagtail project tree to use Wagtail 2.x module paths

 

きちんと出てきてくれましたね。

プロジェクトを作成するためには、どうやら

wagtail start <プロジェクト名>

 

を叩く必要があるようです。

 

Wagtail_start_command
Wagtail_start_command

すると、写真のようなファイル群が作成されます。

では、ここから様々なことをやっていきたいと思います。

 

って、あれ?フォルダの中身とかほとんどDjangoみたいなものではないですか。

しかもDockerファイルまで生成してくれています。ありがたい。

 

 

いったん中身をいじるのに専念したいので

続きはまた次回。