『Django入門編1: Djangoの基本を理解しよう (全10回)』
Python系のレッスンを終わらせるつもりだったが、
Flask入門編を終了した時点で、データベースやSQL系の知識の必要性を感じたから、
先に、SQLやPHP+Laravelの方を先に終わらせることとなった。
今回ようやく『Webアプリ開発入門 Django編 (全5レッスン)』に取り掛かることができる😋
事前準備としては、Djangoのインストールくらいかな?
pip install Django
anacondaで以前Django-envという環境も作っているけど、
paiza用の環境にも入れておこう。
メモ
#01:Djangoとは
- Djangoとは:PythonによるWebアプリケーションフレームワーク
- Webアプリケーションフレームワークというのは、Webアプリを開発するために便利な部品やツールをひとまとめにしたもので、実践的なWeb開発では、このようなフレームワークを使うことで、効率よく開発を進めていくことができる。
- Djangoの特徴
- 高速開発
- 多数の便利な機能を装備
- テンプレートエンジン
- データベース(O/Rマッパー)
- 管理画面
- ユーザー認証
PHPのLaravelと同じような感じだな〜😯
- 参考になるWebページ
- - Django
https://www.djangoproject.com/ - - Django ドキュメント | Django documentation | Django
https://docs.djangoproject.com/ja/2.0/←古い
https://docs.djangoproject.com/ja/3.1/ - - Home | djangoproject.jp
http://djangoproject.jp/ - - Djangoウェブフレームワーク (Python) - ウェブ開発を学ぶ | MDN
https://developer.mozilla.org/ja/docs/Learn/Server-side/Django - - Djangoでの開発 ダイジェスト - Qiita
https://qiita.com/zaburo/items/0e15f6c150caa13ca34c
- - Django
#02:Djangoで最初のプロジェクトを作ろう
- Djangoのバージョンを確認する。
$ python -m django --version - myappプロジェクトを作成する。
$ django-admin startproject myapp
※ ↑これを実行すると、↓なんかエラー?メッセージ出た!?😣
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
このままでも、Webサーバーにアクセスできるみたいだけど、
ちゃんと動いてないよ、って言われてるみたい。😞
どうやら'python manage.py migrate'を実行せよ、ってことらしいので、
それをやってから再度サーバーを起動すると上記のエラーメッセージは
とりあえず出なくなった。
それ以外で特に違いは分からないけど。
#03:DjangoでHelloWorld
- Djangoのアプリケーションを作成する$ python manage.py startapp bbs
- views.pyを修正myapp/bbs/views.pyの編集
- プロジェクト全体のルーティングを設定
myapp/myapp/urls.pyの編集 - bbsアプリのルーティングを設定
myapp/bbs/urls.pyの新規作成 - bbsアプリをプロジェクトに登録
myapp/myapp/settings.pyの編集
#04:Djangoにテンプレートを追加しよう
- views.pyからテンプレートを呼び出す
myapp/bbs/views.pyの編集 - テンプレートファイルを作成する
myapp/bbs/templates/bbs/index.htmlの新規作成
#05:テンプレートにデータを渡そう
- views.pyからテンプレートにデータを渡す
myapp/bbs/views.pyの編集- contextという辞書データを作成すして、renderの第3引数として渡す)
- テンプレート側でデータを受け取って表示する
myapp/bbs/templates/bbs/index.htmlの編集- contextのキーを指定して{{ }}で囲む。
#06:Djangoのモデルを作ろう
- Djangoからデータベースを操作する、モデルについて学習する。
→ モデルを使うと、Pythonのオブジェクトとして、データベースのレコードを操作できるようになる。 - モデルとは
- モデルは、データベースのレコードを Pythonのオブジェクトに割り当てる機能。
- 通常、データベースを操作するにはSQLを使う。SQLは、データベースの操作で標準となる重要な技術だが、Pythonとは文法や考え方も異なる。
- モデルは、データベースのレコードをオブジェクトに割り当てる。モデルを使えば、SQL(エスキューエル)を書かなくても、Pythonのコードでデータベースのレコードをオブジェクトとして操作できる。
→ このようにオブジェクトでデータベースを操作するツールを「ORマッパー」(Object-relational mapper)と呼ぶ。
- phpMyAdminで空のデータベースを作成
- settings.pyで、データベース設定
myapp/myapp/settings.pyの編集 - models.pyを作成
myapp/bbs/models.pyの編集 - マイグレーションとは
- マイグレーションとは、データベースの中身を一括して移行したり変更する作業のこと。Djangoのマイグレーション機能を利用すると、データベースの変更を一度に行うことができる。また、変更内容を元に戻したい場合も、コマンド一つで実現できる。
- Djangoのマイグレーションは、2段階で行う。まず専用のコマンドを使ってマイグレーションファイルを作成する。それからマイグレーションを実行する。
- Djangoでは、モデルを作成しておくと、マイグレーションコマンドでMySQLのテーブルを作成することができる。
- マイグレーションファイルを作成する$ python manage.py makemigrations bbs
※ ↑これを実行するには、mysqlclientをインストールする必要があるみたい。ただ、いきなりpip install mysqlclientするとエラーとなるので、開発ツールを先にインストールしないといけないらしい。以下のサイトが参考になった。mysql-serverはインストール済みだから、libmysqlclient-devをインストールすることで、pip install mysqlclientでちゃんとインストールすることができた。
- マイグレーションを実行する$ python manage.py migrate
#07:Djangoの管理サイトを使ってみよう
- 管理ユーザーをコマンドで登録する$ python manage.py createsuperuser
- 次のURLで、管理サイトにアクセスする
- 次のURLで、管理サイトにアクセスする
- 管理サイトに、作成したArticleモデルを追加するmyapp/bbs/admin.pyの編集
#08:モデルのデータを一覧表示しよう
- ビューで、モデルのデータを取り出す
myapp/bbs/views.pyの編集 - テンプレートで、モデルのデータを一覧表示する
myapp/bbs/templates/bbs/index.htmlの編集
#09:データの詳細を表示しよう - その1
- 掲示板アプリのルーティング
ルート | コード | 表示するページ |
---|---|---|
(ドメイン名)/bbs/ | index() | 一覧表示 |
(ドメイン名)/bbs/<id> | detail() | 個別表示 |
(ドメイン名)/admin/ | admin.site.urls | 管理サイト |
- urls.pyに/detailを追加するmyapp/bbs/urls.py
- views.pyを修正する
myapp/bbs/views.py
#10:データの詳細を表示しよう - その2
- views.pyに、detail関数を追加
myapp/bbs/views.py - detail.htmlを追加する
myapp/bbs/templates/bbs/detail.html - 一覧表示から詳細表示にリンク
myapp/bbs/templates/bbs/index.html
認定証
このレッスンでは、チャプター8を終えた時点で、認定証の授与と学習ステータスのランクアップがあった。
![](https://blogimg.goo.ne.jp/user_image/19/ab/23fae1991e9a5fba84fb00609a9fe9fc.png)
学習ステータス
![](https://blogimg.goo.ne.jp/user_image/73/8f/4daa6057a72fb9803a8bf555fbc8531d.png)
※コメント投稿者のブログIDはブログ作成者のみに通知されます