Django Allauth 가입 양식 사용자 지정
우리의 예제는 내 Cookiecutter Django 프로젝트의 코드를 기반으로 하지만 Django Allauth를 사용하는 모든 프로젝트에 이식할 수 있어야 합니다.
1단계: Django-Allauth에게 맞춤형 가입 양식을 사용하도록 지시
config/settings/base.py
의 맨 아래에 다음 코드 스니펫을 입력합니다.
# Control the forms that django-allauth uses
ACCOUNT_FORMS = {
"login": "allauth.account.forms.LoginForm",
"add_email": "allauth.account.forms.AddEmailForm",
"change_password": "allauth.account.forms.ChangePasswordForm",
"set_password": "allauth.account.forms.SetPasswordForm",
"reset_password": "allauth.account.forms.ResetPasswordForm",
"reset_password_from_key": "allauth.account.forms.ResetPasswordKeyForm",
"disconnect": "allauth.socialaccount.forms.DisconnectForm",
# Use our custom signup form
"signup": "spybook.users.forms.SpyBookSignupForm",
}
2단계: Django 양식 가져오기
<yourprojectname>/users/forms.py
에서 Cookiecutter Django는 django.contrib.auth.forms
를 forms
로 가져옵니다. 이것은 일반적으로 django.forms
가 일반적으로 일반forms
으로 가져오기 때문에 네임스페이스 문제입니다. 이 문제를 해결하기 위해 다른 네임스페이스에서 가져오기django.forms
를 수행해 보겠습니다.
# Importing django.forms under a special namespace because of my old mistake
from django import forms as d_forms
3단계: django-allauth의 가입 양식 가져오기
해당 양식 가져오기 바로 아래에서 SignUpForm
가져오기:
from allauth.account.forms import SignupForm
4단계: 맞춤형 가입 양식 작성
긴 설명을 작성하는 대신 모든 코드 행에 주석을 달겠습니다.
# SpyBookSignupForm inherits from django-allauth's SignupForm
class SpyBookSignupForm(SignupForm):
# Specify a choice field that matches the choice field on our user model
type = d_forms.ChoiceField(choices=[("SPY", "Spy"), ("DRIVER", "Driver")])
# Override the init method
def __init__(self, *args, **kwargs):
# Call the init of the parent class
super().__init__(*args, **kwargs)
# Remove autofocus because it is in the wrong place
del self.fields["username"].widget.attrs["autofocus"]
# Put in custom signup logic
def custom_signup(self, request, user):
# Set the user's type from the form reponse
user.type = self.cleaned_data["type"]
# Save the user's type to their database record
user.save()
나는 이것을 내 라이브 스트림에 썼으며 내 채널과 twitch 채널에서 볼 수 있습니다. 나는 또한 이것이 어떻게 작동하는지에 대한 짧은 비디오 프레젠테이션을 만들 것입니다. 물론 이에 대한 코드는 GitHub 에서 찾을 수 있습니다.
모든 종류의 고급 트릭과 팁을 배우고 싶다면 Django Best Practices에서 내 아이스크림 테마book와 course을 살펴보세요.
Reference
이 문제에 관하여(Django Allauth 가입 양식 사용자 지정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/danielfeldroy/customizing-django-allauth-signup-forms-2o1m
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# Control the forms that django-allauth uses
ACCOUNT_FORMS = {
"login": "allauth.account.forms.LoginForm",
"add_email": "allauth.account.forms.AddEmailForm",
"change_password": "allauth.account.forms.ChangePasswordForm",
"set_password": "allauth.account.forms.SetPasswordForm",
"reset_password": "allauth.account.forms.ResetPasswordForm",
"reset_password_from_key": "allauth.account.forms.ResetPasswordKeyForm",
"disconnect": "allauth.socialaccount.forms.DisconnectForm",
# Use our custom signup form
"signup": "spybook.users.forms.SpyBookSignupForm",
}
<yourprojectname>/users/forms.py
에서 Cookiecutter Django는 django.contrib.auth.forms
를 forms
로 가져옵니다. 이것은 일반적으로 django.forms
가 일반적으로 일반forms
으로 가져오기 때문에 네임스페이스 문제입니다. 이 문제를 해결하기 위해 다른 네임스페이스에서 가져오기django.forms
를 수행해 보겠습니다.# Importing django.forms under a special namespace because of my old mistake
from django import forms as d_forms
3단계: django-allauth의 가입 양식 가져오기
해당 양식 가져오기 바로 아래에서 SignUpForm
가져오기:
from allauth.account.forms import SignupForm
4단계: 맞춤형 가입 양식 작성
긴 설명을 작성하는 대신 모든 코드 행에 주석을 달겠습니다.
# SpyBookSignupForm inherits from django-allauth's SignupForm
class SpyBookSignupForm(SignupForm):
# Specify a choice field that matches the choice field on our user model
type = d_forms.ChoiceField(choices=[("SPY", "Spy"), ("DRIVER", "Driver")])
# Override the init method
def __init__(self, *args, **kwargs):
# Call the init of the parent class
super().__init__(*args, **kwargs)
# Remove autofocus because it is in the wrong place
del self.fields["username"].widget.attrs["autofocus"]
# Put in custom signup logic
def custom_signup(self, request, user):
# Set the user's type from the form reponse
user.type = self.cleaned_data["type"]
# Save the user's type to their database record
user.save()
나는 이것을 내 라이브 스트림에 썼으며 내 채널과 twitch 채널에서 볼 수 있습니다. 나는 또한 이것이 어떻게 작동하는지에 대한 짧은 비디오 프레젠테이션을 만들 것입니다. 물론 이에 대한 코드는 GitHub 에서 찾을 수 있습니다.
모든 종류의 고급 트릭과 팁을 배우고 싶다면 Django Best Practices에서 내 아이스크림 테마book와 course을 살펴보세요.
Reference
이 문제에 관하여(Django Allauth 가입 양식 사용자 지정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/danielfeldroy/customizing-django-allauth-signup-forms-2o1m
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from allauth.account.forms import SignupForm
긴 설명을 작성하는 대신 모든 코드 행에 주석을 달겠습니다.
# SpyBookSignupForm inherits from django-allauth's SignupForm
class SpyBookSignupForm(SignupForm):
# Specify a choice field that matches the choice field on our user model
type = d_forms.ChoiceField(choices=[("SPY", "Spy"), ("DRIVER", "Driver")])
# Override the init method
def __init__(self, *args, **kwargs):
# Call the init of the parent class
super().__init__(*args, **kwargs)
# Remove autofocus because it is in the wrong place
del self.fields["username"].widget.attrs["autofocus"]
# Put in custom signup logic
def custom_signup(self, request, user):
# Set the user's type from the form reponse
user.type = self.cleaned_data["type"]
# Save the user's type to their database record
user.save()
나는 이것을 내 라이브 스트림에 썼으며 내 채널과 twitch 채널에서 볼 수 있습니다. 나는 또한 이것이 어떻게 작동하는지에 대한 짧은 비디오 프레젠테이션을 만들 것입니다. 물론 이에 대한 코드는 GitHub 에서 찾을 수 있습니다.
모든 종류의 고급 트릭과 팁을 배우고 싶다면 Django Best Practices에서 내 아이스크림 테마book와 course을 살펴보세요.
Reference
이 문제에 관하여(Django Allauth 가입 양식 사용자 지정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/danielfeldroy/customizing-django-allauth-signup-forms-2o1m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)