7日目 Djangoを学ぼう!
「今日はPythonのフレームワークのDjangoについて説明していくよ。実際の使い方は後でチュートリアルで学んでもらうからここでは簡単に説明だけ」
「はーい」
* * *
「まずPythonのフレームワークはいくつか種類がある。代表的なのを3つくらい紹介しておく。
■Django
Pythonのフレームワークの中でよく使われている。Web開発に必要な機能がだいたい詰まった万能フレームワーク。小規模から大規模なシステムに至るまで対応可能。
■Flask
他のWebフレームワークに比べて軽量なWebフレームワーク。学習コストは低めであり、導入しやすい。小規模、多くの機能を必要としないWebアプリケーション開発に向いてる。
■Bottle
こちらも軽量・シンプル・高速であることに特化している。単発的なアプリケーション、軽さを重視したいアプリケーション開発向き。
フレームワークには種類があって、フルスタックと呼ばれるもの、マイクロ、非同期フレームワークなどいくつかある。フルスタックフレームワークはWeb開発に必要な機能がすべてそろっているフレームワークのことで汎用性が高いのが特徴。逆にマイクロフレームワークは必要最低限の機能が搭載されているフレームワークで小規模で、簡単に実装できる。
作ろうとしている小説投稿サイトは多機能、大規模になる可能性もあるので汎用性が高いフルスタックフレームワークを使うのが無難。
ということで、よく使われていて、フルスタックのDjangoを今回は使っていくことにする」
「へー」
* * *
https://www.djangoproject.com/community/logos/
「Djangoは2005年にリリースされた。結構古くからある。素早い開発と再利用性をモットーに作られてる。
Djangoを使って作られた有名どころは、InstagramとかMozillaかな。結構大きいところでも使われているから、規模が大きくなってもフレームワークとしては問題ない。あとは管理サイトが充実しているので管理者権限で何かするときに特別なものを作らなくてもいいのが楽」
「Instagramにも使われてるんだ。すごい」
「有名どころでも使ってるから、大規模に拡大しても対応できる。使っている人も多いので、資料も充実しているよ。わからないことがあったら検索すれば大体見つかる。
ここからDjangoを使って説明するよ。開発用のエディタだけど、Pycharmか
Visual Studio Codeあたりがお勧めかな。
ではここからDjangoの流れについて簡単に説明するよ。こんなものかなって思ってくれればいい。実際にはチュートリアルで実践するから流れだけ理解しておいて」
「はいよー」
「
■Djangoの処理の流れ。
大体こんな感じ。
Djangoの中にはアプリケーション(特定の機能で分割されている)が複数あって、URLでどのアプリを使うのか判別する。
アプリケーションはすべてを統合することもできるけど、なるべく独立に作って、各アプリを消しても影響がないように作る。例えば /user/とかいうURLならUser機能のアプリケーション、/read/ならRead用のアプリケーションなどなるべく独立に作る。
URLでそのアプリにリクエスト、Viewでどんなデータ(modelからデータベースに行ってデータを貰う)を使って、どのページ(テンプレートのページを用意しておいて、どれを使えばいいかviewで判断)を使うか処理。貰ったデータとページを組み合わせて、その結果をユーザーに返す。
■Djangoプロジェクトの開始
Djangoは1つのWebアプリをプロジェクトという単位で管理する。
その中にはプロジェクトの設定ファイルとアプリケーション群で構成される。
■とりあえず作ってみる。
事前にコマンドラインを立ち上げておく。まずは適当なディレクトリにプロジェクトフォルダを作成。
$ mkdir djangogirls
$ cd djangogirls
そのあとmyvenvという仮想環境(virtual environment)を作成
$ python -m venv myvenv
仮想環境の実行。
myvenv\Scripts\activate
Djangoのインストール
pip install Django~=2.2.4
無事Djangoがインストールされたので、プロジェクトの作成。
django-admin startproject mysite .
mysiteというプロジェクトを立ち上げました。この時点でのフォルダ構造はこんな感じ。
manage.pyは開発関係のためのコマンドファイル。
settings.pyはプロジェクトを管理するためのファイル。
まずタイムゾーンとランゲージの変更。あと静的ファイルのパス追加。
TIME_ZONE = 'Asia/Tokyo'
LANGUAGE_CODE = 'ja'
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
データベース(sqlite3)の作成
python manage.py migrate
と、ここまで来たら開発用ウェブサーバーの起動。(動作確認用)
python manage.py runserver
起動したらhttp://127.0.0.1:8000/にアクセス
ここまでがプログラミング言語でいう、Hello World。ここからDjangoの世界に入って開発を進めていくわけですね。ということでDjangoプロジェクトを立ち上げることができましたと。
Djangoではプロジェクト(Webアプリ)を作成し、機能ごとにアプリケーションを作成していくことになります。
DjangoではModel (データベース)、View(呼び出し)、Template(HTMLテンプレート)、URLs(URLパターン)、Forms(Modelに基づく入力フォーム)などでどのように動作するかが決められており、それぞれを定義していくことによって動きます。
基本的にURLを決める(urls.py)→どのデータとテンプレートを呼び出すか(view.py)→データベースからの呼び出し(models.py)→テンプレートからの呼び出し(templates)の手順で作っていくことになります。必要な場合はFormを作ったりします」
「??」
「あんまり細かいこと言いだすとキリがないので概要としてはこれくらいで、どんな風に作るのかはチュートリアルが用意されているのでそこで学ぼう。ここまでが、使う言語についての基礎について。
次から開発準備して作り始めるからここまでで学んだHTML/CSS/JavaScript/Python/Django。復習しておいてね。次から開発準備をしていくよ」
「まだ、入り口なんだね……」
ここまでがスタート地点。必要なプログラミング知識を突貫で覚えてもらいました。
HTML/CSSは必須。そのあとJavaScriptを覚えるのがいいですがスキップ可能。フレームワークを選んだら開発準備が完了します。とりあえず1週間以内にこの辺りまで進めましょう。時間をかけすぎると挫折します。
全部を覚える必要はないけど、こういう知識が必要なんだな程度は予習が必要です。
ここから、実際に開発していきます。
細かいところはアウトプットしながらじゃないとなかなか身につかないので、ある程度ざっくりと学んだら実践するのがいいと思います。