[Django] ユーザー認証でパスワードに大文字小文字数字を含むよう強制する
Webサービスでよくある「パスワードには大文字小文字数字を含むようにしてください。」を実装する方法をご紹介します。
大文字小文字数字を含むように強制する
まずは、条件を満たしているかを判定するVaridatorクラスを作成します。
Webサービスでよくある「パスワードには大文字小文字数字を含むようにしてください。」を実装する方法をご紹介します。
まずは、条件を満たしているかを判定するVaridatorクラスを作成します。
Djangoのモデルにお手軽に論理削除の機能を追加するライブラリのご紹介
Django-Boost https://github.com/ChanTsune/django-boost
今回、論理削除を実装するにあたって利用するライブラリです。
論理削除の機能以外にもDjangoで開発を行うときに便利な関数、ミックスインクラス群が纏ったパッケージです。
DjangoでフォームやDBのフィールドに入力制限を設けたい場合に利用するバリデーター(Validator)を自作する方法のメモ
Djangoには標準でvalidate_email 、 MinLengthValidator、RegexValidatorなどのバリデーション関数やクラスが用意されています。
Djangoのユーザー認証をDjango標準のUserモデルではなく自分で定義したものを利用するメモです。
Djangoでカスタムユーザーを利用する場合は大きく以下の三つに分類できます。
Djangoでいくつかプロジェクトを作っていると大体、自分なりのプロジェクトの雛形っていうのができてくると思います。
毎回、デフォルトのテンプレートから作成するのは面倒です。
Djangoでリクエストヘッダやレスポンスヘッダを操作する方法のご紹介
リクエストヘッダはHttpRequestのMETA属性、レスポンスヘッダの内容はHttpResponseから辞書と同じ書法で設定、取得できます。
今回はFormViewについて詳しく見てみましょう。
Githubよりソースコードを拝借します。
django/django https://github.com/django/django/tree/stable/2.2.x
では、FormViewから
class FormView(TemplateResponseMixin, BaseFormView):
"""A view for displaying a form and rendering a template response."""
二つほどクラスを継承しています。TemplateResponseMixinとBaseFormViewです。FormViewの中身はBaseFormViewで実装されていそうな雰囲気です。
pipでdjango-herokuをインストールしようとするとdjango-herokuが依存しているpsycopg2がコンパイルにコケてインストール出来ないことがあります。
Djangoでテストを行うときに、モデルを利用したテストを行うことがあると思うのですが、そのときに毎回マイグレーションファイルを作成してからテストをしないと
クラスベースビューから操作する場合は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の値と有効期限を設定している。