Djangoで数値型もしくはUUID型等のフィールドに、クライアント側から未入力を許可するにはnull=Trueとblank=Trueのオプションを 作成日時: 2021年8月7日 10時53分 最終更新日時: 2021年8月7日 10時53分 Categories: サーバーサイド Tags: Django 上級者向け アンチパターン タイトルの通り。 基本的な話として、blankとは空文字列のこと。だから文字列型扱いになる。一方でnullはPythonで言うとNoneであり、型は無い。 よってblank=Trueのフィールドオプションが許されるのは、CharField等の文字列型系のフィールドのみで、IntegerFieldやUUIDFieldには許されない。 と思われがちだが、それは半分誤解である。実は下記の指定は正しい。 dt = mo ... 続きを読む
Pythonの角括弧と丸括弧の違い、丸括弧を使う場合の注意点【()と[]、タプル型とリスト型】 作成日時: 2021年6月22日 15時12分 最終更新日時: 2021年6月22日 15時12分 Categories: サーバーサイド Tags: python アンチパターン tips 初心者向け Djangoの公式コードを流用したりしていると、よく見かける()を使ったコード。 これはタプルである。タプルはリスト型の[]と同じであるが、書き換えが不可能であるという点でリスト型とは異なる。 タプルを定義する時、下記のような書き方をしてしまうと、文字列型として判定されてしまう。 ("username") タプルとして扱ってもらいたいのであれば、下記のように記述する。カンマを忘れずに。 ("username",) タプルはリストと同様に扱えるので、後から ... 続きを読む
【Django】views.pyの事前処理 VS (埋め込み型)カスタムテンプレートタグ・フィルタ 作成日時: 2021年6月15日 03時08分 最終更新日時: 2021年6月15日 03時08分 Categories: サーバーサイド Tags: django カスタムテンプレートタグ 上級者向け アンチパターン コラム 思考停止状態でカスタムテンプレートタグを作っているとき、ふと気づいた。 『これ、views.pyで事前に処理をしたほうが良いのではないか』と。 考察に至った背景 カスタムテンプレートタグは基本的にviews.pyがレンダリングをする段階で動作する。 つまりそれは、クライアントにレスポンスが届く直前であり、サーバーサイドが介入できる最後の処理である。 故に、『カスタムテンプレートタグを実行した後に、任意の処理 ... 続きを読む
【Slack風】モーダルダイアログ無し、ページ遷移無しで編集フォームを作る【JS不使用】 作成日時: 2021年4月25日 13時42分 最終更新日時: 2021年4月25日 13時42分 Categories: サーバーサイド Tags: ウェブデザイン 上級者向け css3 html5 django アンチパターン 投稿されたコンテンツを編集する時、編集フォームを表示するページに遷移したり、編集フォームをJSなどを使用してモーダルダイアログとして表示させることがある。こんなふうに。 しかし、これでは他のコンテンツを見ながらの編集ができない。それだけでなく、ページ遷移やダイアログ表示を行うとJSやサーバーサイドに負担がかかる。そこで、投稿したコンテンツを表示する場所を、編集フォームに切り替えるように仕立てる。こん ... 続きを読む
Djangoのforms.pyが提供するフォームテンプレートは使わない 作成日時: 2021年4月13日 21時32分 最終更新日時: 2021年4月13日 21時32分 Categories: サーバーサイド Tags: django アンチパターン ウェブデザイン コラム Djangoのforms.pyはユーザーから受け取った値のバリデーションだけでなく、フォームのテンプレートも提供してくれる。(widgetを使うなどしてクラス名やHTMLタグの指定ができる) しかし、私はこのforms.pyの提供するフォームのテンプレートは使わない。本記事ではその理由を列挙する 理由1:フロントサイドとサーバーサイドの分業問題 そもそも、テンプレートの開発はフロントサイド開発者のするこ ... 続きを読む