はじめに
Django公式チュートリアルを読み、ハンズオンしてみたので学んだことを書き出してみます。
参考
学んだこと
DjangoはPythonのフレームワークです。
アプリ開発に必要な機能がまとまっている構造なので、効率よくアプリを作成できるようになっています。箇条書きで学んだことをかいつまんで記載してみます。
ORM(オブジェクトリレーショナルマッパー)
- 長いSQL文を書かなくてもUsers.allなどを書けばORMがデータベースから情報を取ってきてくれる。なのでSQLの知識がなくてもデータベースの作成ができる
マイグレーション(データの移行)
- $ python3 manage.py makemigrations
- まだ作成されていないテーブルを作るためのマイグレーションを生成する
- $ python3 manage.py migrate
- マイグレーションを実行し、実際にデータベースにテーブルを作成する
- $ python manage.py sqlmigrate polls 0001
- ただのmigrateではなく、上記のコマンドを入力するとデータベースを作る際にどのようなSQLで実行されるかを見せてくれる。実際にSQLが実行されてマイグレーションされてるわけではなく、文章としてSQL文を表示してくれる
- settings.py内の
INSTALLED_APPSリストに追記することで、追記した内容はマイグレーション対象になる
アプリの識別
- Djangoプロジェクト内に複数のプロジェクトがあったとしても、名前空間をつけることで識別ができるようにする
- urls.pyに
app_name = "polls"と指定する - viewsのURLを
<a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a>のように、urlにアプリ名をつけて記述する
- urls.pyに
サイバー攻撃への対策
- CSRF(クロスサイトリクエストフォージェリ)
- サイバー攻撃手法の一つ
- ユーザーにリンクを踏ませて不正なリンクを送信させる手法
- Djangoでの対策としては、自サイト内を URL に指定した POST フォームには全て、
{% csrf_token %}テンプレートタグを使う
テストは重要
- コードを書くのとテストをするのはどちらが先だとしてもどちらも必要
- テストにおいては冗長であるのは良いこと
特定の困った時の調べ方
- 特定のパッケージに発生する問題であれば、そのパッケージのドキュメントにトラブルシューティングのFAQがあるかどうか確認する
バージョン確認
- Djangoのバージョンはpip3 freeze や pip3 listで確認できる
- 他にもインストール済みのアプリのバージョンも表示してくれる
良かったところ
公式チュートリアルなので間違いのない正しい情報が全て載っていると思える状態で進んでいけるのがよかったです。わからないことがあり検索してブログなどを読んでいるときは、誤った認識が載っている可能性もあることを考慮しながら読んでいることが結構あります。
公式の情報だと疑わずに寄り道せずに進んでいける状態になれることが今回の良い気付きでした。
悪かったところ
翻訳のような文体なのでどうしても読みにくいところがあります。慣れてくるとまあまあ理解できてきますが、最初の1ページ目は全然慣れなかったので人によってはそこで挫折する可能性もあるんじゃないかなと思いました。
難しかったこと
フレームワークなので打ち間違いなどの小さいミスだとしても大量にエラー文が表示されて、どこにエラーが潜んでいるのかというのが全くわかりませんでした。チュートリアルの内容を進めていくと、エラー文の最後の方を特に注視して読めば良いと言うのは気付けるようになりましたが、それでもそのやり方が100%正しいわけではないので見たことがないエラーが出てしまった際にはまだ頭を抱える場面が多いです。