親です。

子ども産まれたんで育児とかについて書きます。映画とか心理学とかITとかの趣味についても書きます。

【Python】Django - 最近Djangoでできるようになったこと

この1ヶ月くらいの間DjangoでWebアプリを作っており、色々とDjangoについて理解できたことが多かった。 今回の記事では新しくできるようになったことをざっと紹介して、同時に次にこれができるようになりたいなあというところについてもまとめたい。

Djangoでできるようになったこと

①user permission関連
ユーザーごとにアクセスできるページを分けたいとき必要になる。
下記の公式ページにあるように、デコレータを使えばかなり簡単に設定できる。
Djangoの認証システムを使用する | Django documentation | Django

具体的には
1. Django管理サイトでユーザにpermissionを与える
1. 1で与えたパーミッションに対応するpermission名を"."の形でデコレータに組み込み、view関数の前にコーディングする。

②ログイン/ログアウトの処理
この記事を読んでやった。良いチュートリアルなのでやってみると良いと思う。
Django2 でユーザー認証(ログイン認証)を実装するチュートリアル -1- 環境構築とアプリ雛形の作成 | ITエンジニアラボ

③middlewareについての概要、基本的な書き方
この記事を読んで簡単なmiddlewareを作成した。
qiita.com

④ClassViewについての概要
ClassViewをなんとなく避けていたんだけど、基本的なノリと多分簡単にかけそうだな、というのがわかった。

⑤formの書き方
formは基本的にどこかのformを継承する。formはそこまで複雑ではないので、Djangoのコードを読んでみたりした。

⑥HTMLテンプレートの書き方
これも今までそんなに使いこなしていなかったけど、{% if %}とかを使うようになった。HTML側で制御構文をかけると便利な局面がかなりある。例えば計算結果を表示させるアプリとかを作っていて、算出結果が0以外の場合は「算出結果 + 円」の表記で出力し、0だった場合は固定のメッセージをだすとか、そういうのをHTML側で制御できる。
ただし、こういう制御をviewsでやるのかそれともHTMLテンプレート側でやるのかみたいなのは責務? の問題とかが発生するポイントだと思うから、本当はよくないのかもしれない。

⑦urlsの仕組み
これは地味に嬉しかった。クライアントからrequestがあった時のルーティング(requesstされているurlがどのviewと紐づくか?)は、まずPRJのurlsでアプリの特定を行い、次に各アプリのurlsを探し、そこで任意のviewが選択される。urls.pyの中で設定されているpath('/app名/', view.index, name="index")みたいなやつがこのルーティングを担当しており、第一引数が担当するURLを、第二引数が担当するviewを、最後のname属性が逆引きの際に指定する名前を示している。

今後やりたいこと

・Djangoの組み込みAppについて
Djangoが最初から提供してくれているアプリ群(例えばAuthとか)について、もうちょい理解を深めたいという気持ちがある。
・責務の話
どこに何を書くべきか? みたいなを知りたい。あとどんなPRJ構成にするかとか。これはアキヨコさんところのサンプルAppをみてみてもいいかもしれない。
・テスト
テストな〜〜。テストって何をテストするんだろう。Webの場合どうなるのか皆目検討つかない。ざっと調べると、
これとか qiita.com こんな記事が見つかった。 nwpct1.hatenablog.com

・セキュリティ
Webセキュリティについてはオススメの本があるらしいのでそれを読む。

・リダイレクト
どんなときにリダイレクトをかけるのかいまいち分かってないない。

以上!!!