『Django入門編2: Djangoの動作を理解しよう (全7回)』
メモ
#01:Djangoの機能構成を理解しよう
- MVT(Model・View・Template)というDjangoの機能構成について理解する。また、Djangoでデータベースを操作するため、どのような機能が利用できるか学習する。
- MVT:Djangoの主な機能ブロック
- モデル:アプリで扱うデータを保持し、操作する
- ビュー:ユーザーからのリクエストに応じて、モデル・テンプレートを呼び出す
- テンプレート:データの表示形式を記述する
+ - ルーティング:リクエストを振り分ける
- データベースを操作できるツール
- Djangoシェル:Djangoアプリの環境を有効にしたまま、コマンドで操作
- マイグレーション:データベースの操作を一括実行・取り消し
- 管理サイト:Webブラウザで、データベースを操作する
#02:Djangoシェルでデータベースを確認しよう
- Djangoシェルを起動する
$ python manage.py shell - Djangoシェルの主な操作コマンド
- テキストを出力In[1]: print('Hello Python')
- プリント関数を使わずにデータを書くと、そのまま出力する
In[2]: 'Hello Python' - テーブルの全てのレコードを出力
In[3]: from bbs.models import Article
In[4]: Article.objects.all() - 指定idのデータを取り出し、カラムを出力
In[5]: article = Article.objects.get(pk=1)
In[6]: article.content- pk:primary keyというデータベースのIDを表す
- データを追加する
In[6]: article = Article(content='Hello Django')
In[7]: article.save() - データを修正する
In[8]: article = Article.objects.get(pk=1)
In[9]: article.content = 'Good Morning'
In[10]: article.save() - データを削除する
In[11]: article = Article.objects.get(pk=1)
In[12]: article.delete()
- テキストを出力
- Djangoシェルを終了する
- CTRL + Dキー
- 参考になるWebページ
- - PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(5)
【Django shellでDB操作入門編】 - Qiita
https://qiita.com/yoshizaki_kkgk/items/8c57144dfd37e005fb17 - - Python入門 Djangoの使い方(その14)PythonシェルでDBを操作する。 | TECH Projin
http://tech.pjin.jp/blog/2017/06/30/python-primer-28-django-14/
- - PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(5)
#03:データベースへのマイグレーションを理解しよう
- マイグレーションの手順:2段階で行う。
- 1. 専用のコマンドを使ってマイグレーションファイルを作成する
- 2. データベースに適用する
- user_nameカラムを追加する
myapp/bbs/models.py- user_name = models.CharField(max_length=200, null = True)
↑カラムを追加する場合、既に存在しているレコードのカラムが空になってしまうため、nullオプションが必要
- user_name = models.CharField(max_length=200, null = True)
- マイグレーションファイルを作成$ python manage.py makemigrations bbs
- マイグレーションを実行$ python manage.py migrate
- 管理サイトでパスワードを変更する方法
1. 管理サイトにログインする
2. 「Users」をクリック
3. パスワードを変更したいユーザー名をクリック
4. 「Change user」-「Password」にある、'Raw passwords are not stored, so there is no way to see this user's password, but you can change the password using this form.'の最後にあるリンクをクリック
5. 「Change password」フォームに新しいパスワードを入力
6. 「CHANGE PASSWORD」ボタンをクリック
#04:テンプレートにカラムを追加しよう
- index.htmlにカラムを追加
myapp/bbs/templates/bbs/index.html - detail.htmlににカラムを追加
myapp/bbs/templates/bbs/detail.html
#05:Webアプリのデータの流れを理解しよう
- 掲示板アプリケーションのルーティング設定
URL | 呼び出す機能 |
---|---|
(ドメイン名)/admin/ | 管理サイト |
(ドメイン名)/bbs/ | 掲示板:記事の一覧表示 |
(ドメイン名)/bbs/<id> | 掲示板:記事の個別表示 |
(ドメイン名)/bbs/new | 新規作成 |
(ドメイン名)/bbs/create | 記事の投稿 |
(ドメイン名)/bbs/<id>/edit | 記事の編集 |
(ドメイン名)/bbs/<id>/update | 記事の更新 |
(ドメイン名)/bbs/<id>/delete | 削除 |
↑bbsは全体のルーティング、それ以降はbbs側のルーティング
- ルートを追加する
myapp/myapp/urls.py- 「/」にアクセスしたら、「/bbs/」にリダイレクトする。
from django.views.generic import RedirectView
path('', RedirectView.as_view(url='/bbs/')),
- 「/」にアクセスしたら、「/bbs/」にリダイレクトする。
#06:データベースに書き込んでみよう
- urls.pyに「create」を追記する
myapp/bbs/urls.py - views.pyに「create」関数を追加する
myapp/bbs/views.py- def create(request):
- 新規リンクをテンプレートに追加する
myapp/bbs/templates/index.html
#07:データベースから記事を削除しよう
- urls.pyに、「delete」を追記する
myapp/bbs/urls.py - views.pyに、delete関数を追加する
myapp/bbs/views.py- def delete(request, id):
- テンプレートに削除リンクを追加する
myapp/bbs/templates/index.html
認定証
Python+Djangoの方がPHP+Laravelよりも使いやすい気がする。
※コメント投稿者のブログIDはブログ作成者のみに通知されます