64日目 割烹芸人の勉強2
今回はDjangoのざっくりとした概要です。
■Djangoとは?
Python用のフルスタック(開発業務における一通りの需要に応えられるような機能を持つこと)フレームワークです。
Djangoだけで大体のWebサービスを作ることができます。
特徴としては、開発用の機能が充実しており、管理サイトも簡単に構築できるところです。
そのため迅速に開発ができるようになっています。
余談ですがPythonには他にもフレームワークがあって、bottle、Flask、Tornado、Ploneなどが存在します。
その中でも人気なのはDjangoとFlaskみたいですね。凝ったものを作りたい人はDjango、簡単なものはFlaskといった感じ。
今回のは別にDjangoじゃなくてFlaskでもよかったんですが、今後作りたいものがDjangoを使わないと難しそうなので経験値稼ぎのために使っています。
ではここからDjangoの流れについて簡単にまとめておきます。
■Djangoの処理の流れ
大体こんな感じ。
Djangoの中にはアプリケーション(特定の機能で分割されている)が複数あって、URLでどのアプリを使うのか判別する。
※アプリケーションはすべてを統合することもできるけど、なるべく独立に作って、各アプリを消しても影響がないように作る。例えば /user/とかいうURLならUser機能のアプリケーション、/read/ならRead用のアプリケーションなどなるべく独立に作る。
URLでそのアプリにリクエスト、Viewでどんなデータ(modelからデータベースに行ってデータを貰う)を使って、どのページ(テンプレートのページを用意しておいて、どれを使えばいいかviewで判断)を使うか処理。
貰った出たとページを組み合わせて、その結果をユーザーに返す。
雑にこんな感じ。
■Djangoプロジェクトの開始
Djangoは1つのWebアプリをプロジェクトという単位で管理する。
その中にはプロジェクトの設定ファイルとアプリケーション群で構成される。
■とりあえず作ってみる。
※チュートリアルにDjangoGirlsというものがあるので興味があればのぞいてみるといいと思います。とても初心者向けでわかりやすいです。
Django Girls のチュートリアル
https://tutorial.djangogirls.org/ja/
事前にコマンドラインを立ち上げておく。
作り方、まずは適当なディレクトリにプロジェクトフォルダを作成。(例ではdjangogirls)
$ mkdir djangogirls
$ cd djangogirls
そのあとmyvenvという仮想環境(virtual environment)を作成
$ python -m venv myvenv
仮想環境の実行。
myvenv\Scripts\activate
Djangoのインストール(例ではrequirements.txtでインストールしている)
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を作ったりします。
あんまり細かいこと言いだすとキリがないので概要としてはこれくらいで、次回から具体的に作っていきます。




