※この記事はWindowsユーザー向けに作成されています。そのためその他OSをご使用の方はコマンド操作が異なります。その際は各々ぐぐっていただけるとありがたいです。
今回はUdemyの「プログラミング初心者でも安心、Python/Django入門講座」を学習し、自分なりにノート的にまとめました。
https://www.udemy.com/pythondjango-a/learn/v4/overview
Djangoとは
Pythonのフレームワーク。
中規模~大規模のWeb開発に用いられ、ルーティング・テンプレート・O/Rマッパー等の豊富な機能を標準で用意している⇒フルスタックと呼ばれる。
開発を開始するまでの準備
- Djangoディレクトリを任意の場所に作成する
- 1で作成したディレクトリ直下でコマンドプロンプトを開き、「py -m django startproject first」を入力
- firstディレクトリが作成され、first直下でmanage.pyが作成されたことを確認したら、コマンドプロンプトで「py manage.py runserver」を入力することで開発用のサーバーが作られる。これはブラウザで「127.0.0.1.8000」と入力することで表示される
- manage.pyがあるディレクトリ(first直下)に移動しコマンドプロンプトで「py -m django startapp myapp」を入力することでDjangoアプリケーションが作成される
開発の開始
- first/urls.pyでurlの名前を定義
- myapp/urls.pyを作成し、urlが呼びだされたときviews.pyが呼び出されることをかく
- views.pyに何をするかをかく(引数にrequestと表示させたいhtmlをかく)
- htmlの中身を書いていく
- モデルの作成
- form.pyを書いていく
作るファイルの説明
- django\first\manage.py
...開発用サーバーの起動、データベースにデータの反映 - django\first\db.sqlite3
...djangoはデフォルトでsqliteというデータベースを使用する。そのデータの保存の時に実際に書き込まれるところ - django\first\first\__pycache__
...pythonで使うファイル。.pyファイルは基本的に一度.pycというファイルにコンパイルされる。これはプログラムの起動までの時間を早くするためである。なお.pycにすることでプログラム自体が早くなっているわけではない。 - django\first\first\__init__.py
...パッケージを読み込んだ際の初期化ファイル - django\first\first\wsgi.py
...djangoを実際のサーバーで動作させるときに必要。ウェブサーバーと連携させる仕様をウェブサーバーゲートウェイインターフェイスという。これを満たすファイル。 - django\first\first\urls.py
...urlに対応した名前を定義するファイル。 - django\first\first\setting.py
...プロジェクト全体の設定を管理するファイル。よく見るところはdebug=True、installed_apps、language_cide、time_zoneなど - django\first\myapp\migrations
...データベースの設定。あんまり触ることはない。フレームワーク側で自動で作成される。 - django\first\myapp\admin.py
...djangoは管理画面が不足しているため管理画面の設定をするファイル。 - django\first\myapp\apps.py
...djangoアプリケーション自体の設定。 - django\first\myapp\models.py
...データベースに関連したファイル。直接sqlを触らずにクラス定義などをすることでテーブルの作成であったり、クラスを操作することでデータの追加削除を行うことができるモデルを定義するところ。 - django\first\myapp\test.py
...djangoアプリケーションのテストを書くところ - django\first\myapp\views.py
実際に行われる処理を書いていくファイル。urls.pyが処理の名前を書くのに対し、これは実際の処理を書いていく。
djangoフレームワークの処理の流れ
- リクエストオブジェクトの作成
- urls.pyをみながら、パスに一致した処理を探す
- その処理をrequestオブジェクトを引数に渡して呼び出す(views.pyの書く処理が呼び出される)
- 呼び出した処理からHTTPResponseオブジェクトを受け取る
- HTTPResponseオブジェクトをブラウザへ返す