Django

[Django] カスタムバリデーター(CustomValidator)を作成する

DjangoでフォームやDBのフィールドに入力制限を設けたい場合に利用するバリデーター(Validator)を自作する方法のメモ

はじめに

Djangoには標準でvalidate_email MinLengthValidatorRegexValidatorなどのバリデーション関数やクラスが用意されています。

[Django] カスタムユーザーを利用する

Djangoのユーザー認証をDjango標準のUserモデルではなく自分で定義したものを利用するメモです。

カスタムユーザー

Djangoでカスタムユーザーを利用する場合は大きく以下の三つに分類できます。

[Django] Http Headerを取得、追加する方法

Djangoでリクエストヘッダやレスポンスヘッダを操作する方法のご紹介

基本

リクエストヘッダはHttpRequestMETA属性、レスポンスヘッダの内容はHttpResponseから辞書と同じ書法で設定、取得できます。

[Django] FormViewについて詳しく見てみる

今回はFormViewについて詳しく見てみましょう。

Githubよりソースコードを拝借します。

django/django https://github.com/django/django/tree/stable/2.2.x

FormView

では、FormViewから

class FormView(TemplateResponseMixin, BaseFormView):
    """A view for displaying a form and rendering a template response."""

二つほどクラスを継承しています。
TemplateResponseMixinBaseFormViewです。
FormViewの中身はBaseFormViewで実装されていそうな雰囲気です。

[Django] cookie情報の設定、取得方法

クラスベース

クラスベースビューから操作する場合はdispatchメソッドをオーバーライドするのが一番お手軽だろう。

from datetime import datetime, timedelta
from django.views.generic import TemplateView

class MyView(TemplateView):
    template_name = "path/to/template"

    def dispach(self, request, *args, **kwargs):
        request.COOKIES['KEY'] # クッキーの値の取得
        response = super().dispach(request, *args, **kwargs)
        max_age = 30 * 60 # 30分
        expires = datetime.strftime(datetime.utcnow() + timedelta(seconds=max_age), "%a, %d-%b-%Y %H:%M:%S GMT")
        response.set_cookie(key, value, max_age=max_age, expires=expires)
        return response

set_cookieメソッドでcookieの値と有効期限を設定している。