不惑にしてまだ何者でもない者のブログ

Arduino関連、Raspberry Pi関連、プログラミング学習

paizaラーニング『Django入門編1: Djangoの基本を理解しよう (全10回)』を受講してみた

2021-02-28 16:40:44 | paiza

『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と同じような感じだな〜😯 

#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
  • 管理サイトに、作成した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を終えた時点で、認定証の授与と学習ステータスのランクアップがあった。


学習ステータス





最新の画像もっと見る

コメントを投稿