ChatGPTでPythonプログラミング 6 DjangoでWEBアプリケーションを作る②Djangoのインストール

(これまでの整理)
いよいよPythonで作ってきたRSSリーダープログラムをWEBアプリケーションにしていくためにDjangoをインストールしていきます。Pythonについてのスキルは初心者レベルですが、ここまでChatGPTに聞きながらゼロから作ってきました。
第一段階としてRSSフィードしているニュースサイトのurlを指定(3つまで指定可能)してキーワード(キーワードも3つまで指定可能)で記事を表示させるというプログラムを作りました。ユーザーがアプリ上で指定するための入力ボックスを備えています。
しかしPythonがインストールされ、いくつかのパッケージがインストールされた環境でなければ動きませんので、これをWEBアプリケーションにしていくのが第二段階です。
そして開発するために選んだのがフレークワークDjangoです。

今回はDjangoのインストールを行います。


私の質問
djangoのインストールと環境設定の仕方を教えてください

ChatGPT

DjangoはPythonのWebアプリケーションフレームワークであり、以下の手順に従ってインストールと環境設定を行うことができます。

  1. Pythonのインストール DjangoはPythonで動作しますので、Pythonのインストールが必要です。Pythonの公式サイト(https://www.python.org/downloads/)から、使用しているOSに合わせたPythonの最新版をダウンロードしてインストールしてください。

  2. pipのインストール pipはPythonのパッケージ管理ツールであり、Djangoを含む多くのPythonパッケージを簡単にインストールできます。Pythonのバージョン3.4以降では、pipがデフォルトでインストールされている場合があります。pipがインストールされていない場合は、コマンドラインから以下のコマンドを実行してください。

python -m ensurepip --default-pip
  1. Djangoのインストール pipを使用してDjangoをインストールするには、以下のコマンドを実行します。

pip install django
  1. プロジェクトの作成 Djangoのプロジェクトを作成するには、コマンドラインから以下のコマンドを実行します。

django-admin startproject projectname

projectnameは、作成するプロジェクトの名前を指定します。

  1. サーバの起動 Djangoの開発サーバを起動するには、以下のコマンドを実行します。

cd projectname
python manage.py runserver
  1. ブラウザでアクセス ブラウザを開いて、 http://127.0.0.1:8000/ にアクセスします。Djangoのデフォルトのトップページが表示されます。

以上の手順で、Djangoのインストールと環境設定が完了しました。

指示通りに作業を進め、実行すると以下のメッセージが表示されました。
python manage.py runserver Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them. May 09, 2023 - 03:05:10 Django version 4.2.1, using settings 'projectname.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.

これはどういうことかChatGPTに聞いてみました。

ChatGPTの回答
このメッセージは、Djangoの開発サーバーが起動されたことを示しています。しかし、18のmigrationが未適用であることを示しており、アプリケーションが正常に動作しない可能性があります。未適用のmigrationを適用するためには、以下のコマンドを実行してください。

python manage.py migrate

これにより、未適用のmigrationが適用され、データベーススキーマが更新されます。その後、再度Djangoの開発サーバーを起動して、アプリケーションをテストすることができます。

Djangoの開発serverは動いたようです。指示通りmigrationを適用したのちに http://127.0.0.1:8000/ にアクセスしてみました。

Django起動画面

Djangoは無事にインストールできました。

(補足)Djangoを理解するために、ちょっと仮想サーバーとデータベースシステムについて聞いてみました。

私:この開発サーバーはネットにはつながるのですか

ChatGPTの回答

デフォルトでは、Djangoの開発サーバーはローカルホスト上でのみ動作します。つまり、開発サーバーが実行されているコンピュータからしかアクセスできません。

したがって、他のコンピュータからアクセスするためには、開発サーバーを外部に公開する必要があります。この場合、公開されたIPアドレスを使用してアクセスすることができます。

ただし、開発サーバーを公開することは推奨されません。開発サーバーはセキュリティ上のリスクがあるため、本番環境での使用は推奨されません。本番環境では、Webサーバーやアプリケーションサーバーを使用してアプリケーションを配信することが推奨されます。

私:昔 apacheという仮想サーバーをインストールした記憶がありますが、いまは使わないのですか。

ChatGPTの回答

ApacheはWebサーバーソフトウェアの一つで、長年にわたり広く使用されてきました。しかし、現在では他のWebサーバーソフトウェアと競合しており、使用される頻度は減少しています。

Djangoや他のPythonのWebフレームワークでは、Apacheの代わりにNginx、Gunicorn、uWSGIなどのWebサーバーやアプリケーションサーバーを使用することが一般的です。これらのソフトウェアは、高速でスケーラブルなWebアプリケーションの開発に適しています。

ただし、Apacheは依然として多くのWebサイトやWebアプリケーションで使用されており、非常に安定しているため、必要に応じて使用することもできます。

私:apacheの他に昔使われた仮想開発サーバーがあったと思いますが?なんでしたっけ。Wで始まる。

ChatGPTの回答

おそらく「WAMP」という仮想開発サーバーのことをおっしゃっているのではないでしょうか。WAMPは、Windows上でApache、MySQL、PHPなどのWeb開発に必要なソフトウェアをまとめてインストールすることができるパッケージの一つです。

WAMPをインストールすることで、簡単にローカル環境でWebアプリケーションを開発することができます。WAMPにはApache、MySQL、PHPの他にも、phpMyAdminやSQLiteなどのツールも含まれています。

ただし、最近はDockerや仮想化技術の進歩により、簡単にローカル環境を構築することができるようになりました。これらの技術を活用することで、より柔軟で効率的な開発環境を構築することができます。

先ほどのDjangoのインストールでは開発サーバーは何が使われていますか

ChatGPT

Djangoの開発サーバーは、Pythonの標準ライブラリに含まれる http.server モジュールをベースにしています。Djangoの runserver コマンドを実行すると、この http.server モジュールを使用して、Webサーバーを起動します。

ただし、この開発サーバーは開発用途にのみ使用されることを意図しており、本番環境で使用することは推奨されていません。本番環境では、より高速で安全なWebサーバーやアプリケーションサーバーが使用されることが一般的です。

なるほどhttp.serverがそうなのですね もっと教えてください

ChatGPT

はい、http.serverモジュールは、Pythonの標準ライブラリに含まれるHTTPサーバーの実装です。このモジュールを使用することで、Pythonで簡単なWebサーバーを実装することができます。

http.serverモジュールには、以下の2つのクラスが含まれています。

  • http.server.HTTPServer: HTTPリクエストを受け付け、http.server.BaseHTTPRequestHandlerクラスを使用して処理するHTTPサーバーを実装するための基本クラスです。

  • http.server.BaseHTTPRequestHandler: HTTPリクエストを処理するための基本クラスで、HTTPメソッド(GET、POSTなど)に応じて処理を実行します。

Djangoのrunserverコマンドは、http.server.HTTPServerクラスを使用して、ローカルマシン上のポート番号8000でHTTPサーバーを起動します。これにより、DjangoアプリケーションがWebブラウザで表示されるようになります。

ただし、http.serverモジュールはシンプルなHTTPサーバーであり、セキュリティ機能やパフォーマンス機能が限定的であるため、本番環境での使用は推奨されません。本番環境では、Nginx、Apache、uWSGI、Gunicornなどの高機能なWebサーバーやアプリケーションサーバーを使用することが一般的です。

これからDjangoを使ってRSSリーダーのWEBアプリケーションを作ろうと思っていますが、実装するときにはそれらのサーバーを使うことになるのですね

ChatGPTの回答

はい、Djangoを使用してRSSリーダーのWebアプリケーションを実装する場合、本番環境でNginx、Apache、uWSGI、GunicornなどのWebサーバーやアプリケーションサーバーを使用することが推奨されます。これにより、アプリケーションのパフォーマンスやセキュリティを向上させることができます。

また、RSSフィードを取得するためには、Pythonのfeedparserbeautifulsoup4などのライブラリを使用することができます。これらのライブラリを使用することで、Pythonで簡単にRSSフィードを取得し、Webアプリケーションに表示することができます。

RSSリーダーのWebアプリケーションを実装する場合、Djangoのモデルやビュー、テンプレートなどを活用して、データベースに保存されたRSSフィードを表示する機能や、ユーザーがRSSフィードを追加・削除できる機能などを実装することができます。

私:Djangoのインストールと設定が終わりました。今後データベースシステムはインストールしますか。

ChatGPTの回答

Djangoでは、デフォルトでSQLiteが使用されており、インストール時にSQLiteのパッケージが自動的にインストールされます。SQLiteは、小規模なWebアプリケーションに適しており、簡単に導入することができます。

ただし、SQLiteは軽量であるため、高負荷のWebアプリケーションや大規模なデータベースを使用する場合には、より高機能なデータベースシステムを検討する必要があります。例えば、PostgreSQLやMySQLといったデータベースシステムが一般的に使用されます。

Djangoでは、様々なデータベースシステムに対応しています。データベースシステムを切り替える場合には、settings.pyファイルのDATABASES設定を変更することができます。詳細については、Djangoの公式ドキュメントを参照してください。


この記事が気に入ったらサポートをしてみませんか?