【Django】유저 등록 폼의 커스터마이즈

소개



이전에는 【Django】 사용자 등록 기능 구현이라는 기사를 만들었지만,
이때의 유저 등록 폼을 커스터마이즈하고 싶다고 생각했으므로 그에 관해서 조사한 것을 기사로 합니다.

상기의 기사의 내용이 끝나고 있는 상태로부터 진행해 가므로,
아직 보지 못한 분은 꼭 봐 주세요.

덧붙여서, 지금 현재의 내 양식은 다음과 같습니다.


맞춤형



forms.py를 다음과 같이 수정합니다.fields 의 부분은 표시하고 싶은 내용으로 해 주십시오.

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

from .models import User


class SignUpForm(UserCreationForm):
    class Meta:
        model = User
        fields = ("username", "channel_name", "email", "password1", "password2")

    ### ここから追加
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for field in self.fields.values():
            field.widget.attrs["class"] = "form-control"
__init__ 를 오버라이드(override) 해 for문의 처리를 기술합니다.

무엇을하고 있는지, self.fields.values()for문으로 순서대로 처리하고 있습니다.
self.fields.values() 의 안에는 class Meta: 로 기재한 fields의 내용이 들어 있습니다.
그들을 순서대로 꺼내 field.widget.attrs["class"] = "form-control"class에 form-control을 설정하고 있습니다.

아마도 각 필드에 form-control라는 클래스를 추가하고,
css를 반영하고 있다고 생각합니다.

잘못하면 죄송합니다.

상기 내용을 기술한 결과 아래와 같은 폼이 됩니다.


상당히 보기 쉬워졌습니다.

채널명은 임의 입력, 이메일 주소는 필수 입력이므로,
그 취지를 기재하려고 생각합니다.

forms.py
class SignUpForm(UserCreationForm):
    class Meta:
        model = User
        fields = ("username", "channel_name", "email", "password1", "password2")

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for field in self.fields.values():
            field.widget.attrs["class"] = "form-control"
        self.fields["channel_name"].help_text = "任意入力"    ### 追加
        self.fields["email"].help_text = "必須入力"    ### 追加

추가한 결과는 다음과 같습니다.


안전하게 추가되었습니다.

사이고에게



이번 기사는 짧지만, 더 이상 쓰는 일도 없기 때문에 이상으로 합니다. . . (웃음)

forms.py를 괴롭히는 것으로 상당히 다양한 수있을 것 같기 때문에,
여러분도 꼭 여러가지 시험해 보세요.

좋은 웹페이지 즐겨찾기