ラズパイをいじっていると、GPIOの制御とかPythonでやりだしますよね。
Web Serverとか動かしているとWebアプリ作りたくなりますよね?
そして、PHPと違ってPythonでWebアプリ開発について調べるとかなりの確率でフレームワークの話に行き着きます。
一からガリガリ書いていくのも勉強の為に良いんだけどなと思いつつ
フレームワークって便利なのかなという誘惑もあり
理解を深めるなら Django って意見が多かったので入れてみることに
調べていくと、インストールもなかなかうまくいかないし
Django ってなにがどんだけいいのって全体感がわかる情報も乏しかったので
少し書いてみます。
まだサンプルアプリをちょっこっと作ってみただけですが
便利そうな点
- Modelファイルに必要なデータ項目を定義すればDB,Table,Fieldなどが作成できる
- Modelファイルにはデータ項目と機能をオブジェクトとして定義できる
- htmlファイル上でPythonのコードを記述できるようになり、DB上から値をPythonの変数を扱うのと似た感じで取り出せる
- 機能も同様にhtmlファイルで扱えて計算結果をhtmlに出力できる
- アプリの管理画面(ログイン認証機能)はアプリ定義時に自動的に用意される。(中身は実装していく必要がありますが)
もっと色々あるのかも知れませんがざっと以上が、一からコーディングしていくより楽かなという点です。
ただ、それでもひとつのアプリを公開するまでそれなりに手数がかかります。
おおよそ以下がDjangoのインストールを含めた流れです。
- 適切なバージョンのPythonインストール
- Python仮想環境の作成(省略可)
- PIP最新化
- Djangoインストール
- プロジェクト作成
- settings.py変更
- 動作確認(Apacheとか使わないならここまででも開発着手可能)
- Apache2-devインストール(apt) *Apache自体は既に入っている前提。devを追加する。
- mod-wsgiインストール(PIP) <– これ不要かもしれない
- mod-wsgiインストール(apt)
- mod-wsgi有効化(apt)
- apacheのvirtual host設定ファイルをsite-availableフォルダ内に作成して有効化
- wsgi.py変更 —-> ここでapache経由でDjangoにアクセス可になる
- アプリ作成
- settings.py変更(アプリ情報追加)
- models.py変更(モデル定義)
- makemigration実行(モデルをDjangoに認識させる)
- migration実行(上で作られた情報でDB tableが作られる)
- admin.py変更(モデルをimportしてDBに情報をPostする機能などを実装
- urls.py変更(プロジェクト/アプリフォルダの両方。url制御)
- views.py変更(urlに対して届いたリクエストをhtmlファイルに振り分けるイメージ)
- テンプレートファイル作成(必要に応じて実施)
- htmlファイル作成
- CSS作成(必要に応じて)
このくらいで簡単なアプリが動くことになります。
私はこのあとReverse Proxyの設定をしましたがここは割愛。
Apacheとの接続以外の部分はDjango Girls tutorialを見るとできると思うので見てみて下さい。
はじめに · HonKit
長くなったので一旦ここまでにします。
詳細設定などはまた書きます。
