はじめに
競馬予測のAIや高配当を探すプログラムなどをPythonで作成しています。多くの人に使って頂きたいので、アプリケーション化することにしました。インターネット経由でアクセスできるようにしたいので、Webアプリケーションを作成することにしました。
Webアプリケーションの作成する際に使用するフレームワークは、djangoを用いることにしました。djangoを初めて使用するので、学んだことを記憶に定着させるために、ブログに学んだことをまとめることにしました。
最終的にはdjangoでTodoアプリを作成する予定です。
今回は下記について記載しています。
- djangoの基本
- djangoによる開発環境の作成
- djangoプロジェクトの作成
djangoを用いて下記のTodoアプリを作成します。
djangoの基本
djangoの主要ファイル
djangoでプロジェクトを作成すると、いくつかのファイルが自動で生成されます。主要ファイルとなる「urls.py」「views.py」「models.py」の役割は大まかに表現すると下記となります。
urls.py | リクエストの内容を解析し、解析した内容でviews.pyを実行する |
views.py | urls.pyからウェブリクエストを受け取り、必要な処理を行ってレスポンスを返す |
models.py | views.pyからのクエリ要求を処理し、クエリ結果を返す |
djangoの動作フロー
djangoがユーザからのリクエストを受けて、レスポンスを返すまでの大まかな流れをまとめました。
- ユーザが、ブラウザからWebページにアクセスする
- Webサーバが、urls.pyにユーザからのリクエストを転送する
- urls.pyは、リクエストを処理し、views.py内の関数あるいはクラスにルーティングする
- views.pyは、リクエストに応じてmodels.pyにデータ取得を要求する
- models.pyは、views.pyの要求に応じてデータベースにクエリを発行する
- データベースは、views.pyのクエリ要求に応答する
- models.pyは、データベースからのクエリ応答をviews.pyに返す
- views.pyは、HMLTページを組み立てるためにbase.htmlを要求する
- views.pyは、base.htmlを取得する
- views.pyは、HMLTページを組み立てるためにtemplate1.htmlを要求する
- views.pyは、template1.htmlを取得する
- views.pyは、htmlとデータを組み合わせてHTMLページを組み立ててレスポンスを返す
- Webサーバはブラウザにレスポンスを返す
base.htmlとtemplate1.html、template2.htmlについて
base.html、template1.html、template2.htmlのファイル名は任意に設定することができます。
- base.htmlでブロック(枠)を定義する
- ブロック(枠)内の内容をtemplate1.html、template2.htmlで設定する
- template1.html、template2.htmlの内容はmodels.pyでデータベースから取得することができる
ニュースサイトのニュースリストとニュース記事のページを生成するときを例に、base.htmlとtemplate1.htmlとtemplate2.htmlを用いた時のイメージを下記にまとました。
<ニュースサイトのニュースリストの作成>
<ニュースサイトのニュース記事の作成>
djangoによる開発環境の作成
作成するDjangoによる開発環境は下記となります。
WSL(Windows Subsystem for Linux)を利用することでUbuntu上でDjangoを用いたWebアプリケーションを作成します。
OS | Windows10 pro |
Visual Studio Code | 1.84.0 |
WSL | 2 |
Ubuntu | 22.04.3 LTS |
Python | 3.10.12 |
django | 4.2.6 |
WSL(Windows Subsystem for Linux)のインストール
Windows上でLinuxを動作させるために、WSLをインストールします。
- 管理者でWindowsにログインする
- 「Winキー」+「r」で「ファイル名を指定して実行」を起動する
- 「OptionalFeatures.exe」を入力して「OK」をクリックする
- 「Windowsの機能」で下記を選択して「OK」をクリックする
・Linux用Windowsサブシステム
・仮想マシン プラットフォーム
- 再起動する
- コマンドプロンプトで「wsl」を実行して下記のように表示されることを確認する
以上でwslのインストールは完了です。
Ubuntuのインストール
Windows上にUbuntuをインストールします。
- 「Microsoft Store」を起動します。
- 検索バーに「ubuntu」を入力して検索する
- 「ubuntu」を選択して「入手」をクリックする
ダウンロードが完了するまで待つ
- ダウンロードが完了したら「開く」をクリックする
- ubuntuのインストール処理が始まるのでしらばらく待つ
- インストール処理が終わるとユーザ作成の処理になるので、ユーザ名とパスワードを入力してユーザを作成する
以上でubuntuのインストールは完了です。
WSLをWSL2に更新
WSLをWSL2に更新します。
WSLのままでも動作しますが、WSL2にすることでパフォーマンスの向上とDockerのサポートが含まれているので、WSL2に更新します。
- コマンドプロンプトを起動する
- 「wsl -l -v」を実行し、インストールしたUbuntuの名前とWSLのバージョンを確認する。下記の場合、名前は「Ubuntu」でWSLのバージョンは「1」となる
WSLのバージョンが「2」と表示されていたら以降の作業は不要です - 「wsl –update」を実行し、でWSLのアップデートを実行する
- 「wsl –set-version Ubuntu 2」を実行し、WSLのバージョンを「2」に設定する
- 「wsl -l -v」を実行し、インストールしたUbuntuのWSLのバージョンを確認する。
下記の場合、WSLのバージョンは「2」となる
以上でWSLをWSL2に更新する作業は完了です。
Visual Studio CodeにWSL(拡張機能)を追加
Visual Studio CodeからWSLに接続するために拡張機能を追加します。
- WSLをインストールしたあとに、Visual Studio Codeを起動する
- Visual Studio Codeを起動するとアプリの右下に「拡張機能のインストール」ダイアログが表示されるので、「インストール」をクリックする
- 「拡張機能: WSL」が表示されるのを待つ
- WSLのUbuntuに接続するために、画面右下の下記のアイコンをクリックする
- 「WSLへの接続」をクリックする
- 画面右下で「WSL: Ubuntu」と表示されていることを確認する
- ターミナルを起動するために「表示」>「ターミナル」をクリックする
- ターミナルで「cat /etc/lsb-release」を実行してUbuntuのバージョンを確認する
以上でVisual Studio CodeにWSL(拡張機能)を追加する作業は完了です。
Pythonの実行環境を構築
Pythonの実行環境をvenvで作成します。
- ターミナルで下記のコマンドを実行し、venvをインストールする
$ sudo apt update $ sudo apt upgrade $ sudo apt install python3.10-venv
- ターミナルで下記のコマンドを実行し、仮想環境を作成する
$ python3 -m venv venv
- ターミナルで下記のコマンドを実行し、仮想環境を起動する
$ source venv/bin/activate (venv)$
- ターミナルで「(venv)」が表示されていることを確認する
以上でPythonの実行環境を構築作業は完了です。
djangoのインストール
djangoのバージョン4.2.6をインストールします。
- Pythonの実行環境を起動させた状態で、pipコマンドでインストールする
(venv)$ pip install django==4.2.6
djangoプロジェクトの作成
プロジェクトはdjangoのコマンドで作成します。djangoを構成するファイルを自動で作成してくれます。
- ターミナルで下記のコマンドを実行し、プロジェクトを作成する
ここでは「todoproject」を作成する。コマンドの最後に「.」を付ける(venv)$ django-admin startproject todoproject .
- Webサーバを起動してWebアプリケーションを利用可能な状態にする
(venv)$ python3 manage.py runserver
- Webブラウザで「https://127.0.0.1:8000」にアクセスすると下記が表示される
以上でプロジェクトの作成は完了です。
コメント