PUROGU LADESU

ポエムがメインのブログです。

Django

【Django】ログインを強制する

LoginRequiredMixin ログインしていることを前提とした機能の場合、 強制的にログイン画面に飛ばしたい。クラスベースではLoginRequiredMixinを実装することで可能となる。 ログイン後は、指定した画面に遷移する。 デフォルトではアクセスしようとした画面…

【Django】モデルインスタンスのsaveとバリデーション

Formクラスにもバリデーションを定義することができるが、 Modelクラスにも定義することができる。 full_clean() バリデーションを実施するにはfull_clean()を呼べばよい。 full_clean()では下記が呼ばれる。 clean_field() -> 各フィールドのvalidatorsに定…

【Django】JSONを返すだけのクラスベースView

画面がいらない場合、テンプレートを使わない場合はクラスベースではViewを使用します。 HttpResponseを作ってcontentにセットして返せば良し。 他のメソッドが必要なら、def post, def headなどを定義すれば良し。 from django.views.generic import View c…

【Django】素のSQL文の実行

パターンは2つある1.モデルオブジェクトに紐づける(SELECTの場合) 2.モデルに関係ないSQLを実行する(INSERT, UPDATE, DELETE, モデル生成しないSELECT) 1.モデルオブジェクトに紐づける detail = DailyReportDetail.objects.raw("SELECT * FROM reportap…

【Django】標準ログイン画面を使う方法

Djangoにはログイン画面を実装する方法が提供されていますので、 それを使用します。Djangoの認証システムを使用する | Django ドキュメント | Django ルーティングの追加 プロジェクトルートのurls.py urlpatterns = [ path("accounts/", include("django.c…

【Django】カスタムユーザーモデルを使う方法

User 名前はCustomUserとし、単純のためBaseUserManagerを継承することとします。 だだ含まれるフィールドが受け継がれてしまうので、すべてカスタムしたい場合はAbstractBaseUserを継承しましょう。settings.pyにUserモデルの指定を追加する AUTH_USER_MODE…

ORマッパーなんか要らない

DjangoのORマッパーに四苦八苦していますが、そもそも必要ないんじゃないかという話。 もちろん単純なSELECTやfilter条件などを使うだけなら難しくもないけれど、 QとかFとかAnnotateとかどう考えたらいいのかわからない。 SQLを覚えたほうが早い ORMのメリ…

【Django】VSCode拡張

なんか久しぶりにDjangoを開いたけどhtml補完がなんかいまいち。もともとDjaneiroを入れてたけど更新されていないようだ。 というわけでコレ marketplace.visualstudio.com入れたらhtml補完ができなくなった。というか以前はできないと思っていたが、回避方…

【Django】クエリを作成する

クエリを作成する | Django ドキュメント | Djangoデータベースからオブジェクトを取得するには、モデルクラスの Manager から QuerySet を作ります。 各モデルは少なくとも一つの Manager を持ち、デフォルトでは objects という名前を持ちます。 SQL 文に…

【Django】モデル

モデルを定義してマイグレーションしてDBを作成するのが目的です。 あと自動生成される管理画面の出来栄えはモデルに依存するでしょう。モデル | Django ドキュメント | Django models.Model class Person(models.Model): first_name = models.CharField(max…

【Django】フォームフィールド

フォームクラスを作る際、フィールド定義に使うオプションなど。 class UserForm(forms.Form): f = forms.EmailField(xxx=xxx) Form fields | Django ドキュメント | Django Field.clean(value) f = forms.EmailField() f.clean('xxx') 渡された値でフォーム…

【Django】パッケージ化

パッケージ化して他でインストールできるようにする 高度なチュートリアル: 再利用可能アプリの書き方 | Django ドキュメント | Djangosetuptoolsをインストールし、これを使ってパッケージ化するpip/conda install setuptools目的のアプリフォルダのみを別…

【Django】チュートリアル7 管理サイトの扱い

その7 管理サイトの扱い 管理サイトのカスタムができる 項目の並び替え カスタマイズクラス作って、引数の二番目に渡す。 class QuestionAdmin(admin.ModelAdmin): fields = ['pub_date', 'question_text'] admin.site.register(Question, QuestionAdmin)fi…

【Django】チュートリアル5〜6 テスト、静的ファイルの扱い

その5 テスト Django におけるテスト Django におけるテスト | Django ドキュメント | Django 各アプリのtests.pyに書く python manage.py test xxxx で実行 モデルやビューごとに TestClass を分割する class QuestionModelTests(TestCase): self.assertIs…

【Django】チュートリアル3〜4 ビューの作成、フォーム

その3ビューの作成 urls.pyにルートを書いていく urlpatternsのパラメータはviews.pyの引数の名前と一致させること。 path('<int:question_id>', views.detail, name='detail'), def detail(request, question_id): return render(request, 'polls/detail.html', context) テ</int:question_id>…

【Django】チュートリアル1〜2 初期設定、データベース、モデル作成

その1インストール はじめての Django アプリ作成、その 1 | Django ドキュメント | Django インストール pip install django conda install django Djangoが入ってるか確認 python -m django --version プロジェクト django-admin startproject mysite ア…