1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Django AuthenticationForm(ログインフォームクラス)

Last updated at Posted at 2022-09-02

AuthenticationFormクラス

  • Djangoは、ログイン用のフォームを実装するためのフォームクラス(AuthenticationForm)をデフォルトで提供している
    • forms.pyで、AuthenticationFormクラスを継承したフォームクラスを定義し、ビュークラスのform_classに指定することで簡単にログインフォームをブラウザに表示することができる
    • AuthenticationFormクラスで定義されているusername, passwordフィールドに対してwidgetを適用している
    • Formクラスの親クラス(BaseForm)のself.fields

※widget:form-controlクラスやプレースホルダーといったフォームの見た目を整えるためのもの
※1:全てのフォームの部品のclass属性に「form-control」を指定(bootstrapのフォームデザインを利用するため)
※2:全てのフォームの部品にpaceholderを定義して、入力フォームにフォーム名が表示されるように指定。

forms.py
from django.contrib.auth.forms import AuthenticationForm 

class LoginForm(AuthenticationForm):
    """ログインフォーム"""
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for field in self.fields.values():
            field.widget.attrs['class'] = 'form-control'
            field.widget.attrs['placeholder'] = field.label   

  • AuthenticationFormは、Django標準のFormクラスを継承している
    • username, passwordフィールドを定義している
class AuthenticationForm(forms.Form):
    """
    Base class for authenticating users. Extend this to get a form that accepts
    username/password logins.
    """
    username = forms.CharField(label=_("Username"), max_length=30)
    password = forms.CharField(label=_("Password"), widget=forms.PasswordInput)

    def __init__(self, request=None, *args, **kwargs):
        """
        If request is passed in, the form will validate that cookies are
        enabled. Note that the request (a HttpRequest object) must have set a
        cookie with the key TEST_COOKIE_NAME and value TEST_COOKIE_VALUE before
        running this validation.
        """
        self.request = request
        self.user_cache = None
        super(AuthenticationForm, self).__init__(*args, **kwargs)

    ~~省略~~
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?