2017-05-05 1 views
0

내가 여기서 잘못 가고있는 것 같습니다. 두 가지 문제가 있지만 간단한 구성 변경으로 두 가지 문제를 해결할 수 있습니다.Django-allauth 및 맞춤 등록 양식

아래 코드를 표시 할 때 암호 필드가 표시되지 않습니다. 파삭 파삭 한 양식이 경고를 생성합니다. 양식 필드 '암호'를 해결할 수 없습니다.

수동으로 암호 필드를 추가하고 양식을 제출하면 아무 일도 일어나지 않습니다. 예. 양식을 기입 한 가입 페이지로 돌아갑니다. 그러나 save_user() 또는 signin() 함수는 결코 호출되지 않습니다. SQL 오류 메시지 또는 양식 오류 메시지가 없습니다.

는 아래의 설정은 다음과 같습니다

ACCOUNT_SIGNUP_FORM_CLASS = 'house.users.forms.SignupForm' 
AUTH_USER_MODEL = 'users.User' 
ACCOUNT_AUTHENTICATION_METHOD = 'email' 
ACCOUNT_EMAIL_REQUIRED = True 
ACCOUNT_EMAIL_VERIFICATION = 'optional' 
ACCOUNT_USER_MODEL_USERNAME_FIELD = None 
ACCOUNT_USERNAME_REQUIRED = False 
ACCOUNT_ADAPTER = 'house.users.adapters.AccountAdapter' 

올바른 파일을 모두 ACCOUNT_SIGNUP 및 ACCOUNT_ADAPTER 포인트 나 변경이를 볼 수 있도록 할 수 있어요 같이 반영됩니다.

여기 또한 How to customize user profile when using django-allauth

설명 된대로 난 그냥 양식을 만든

class SignupForm(forms.Form): 
    first_name = forms.CharField(max_length=30) 
    last_name = forms.CharField(max_length=30) 

def __init__(self, *args, **kwargs): 
    super(SignupForm, self).__init__(*args, **kwargs) 
    self.helper = FormHelper() 
    self.helper.form_show_labels = False 
    self.helper.field_class = '' 
    self.helper.layout = Layout(
     Field('first_name', placeholder='First Name', autocomplete='off'), 
     Field('last_name', placeholder='Last Name', autocomplete='off'), 
     Field('email', placeholder='Email', autocomplete='off'), 
     Field('password', placeholder='Password', autocomplete='off'), 

     Div(Submit('Register', 'Register', css_class='btn btn-primary block full-width m-b'), css_class='form-group'), 
     HTML('<p class="text-muted text-center"><small>Already have an account?</small></p>'), 
     Div(HTML('<a class ="btn btn-sm btn-white btn-block" href="' + reverse('account_login') + ' " > Login </a>'),css_class='form-group') 
    ) 

def signup(self, request, user): 
     user.first_name = self.cleaned_data['first_name'] 
     user.last_name = self.cleaned_data['last_name'] 
     user.save() 

이 forms.py, 여기에 (난 그냥 AllAuths 버전을 내장), 사용자 정의 사용자 모델

class User(AbstractUser): 
    name = models.CharField(max_length=30, null=True) 
    birthdate = models.DateField(null=True, blank=True) 
    legal_name = models.CharField(max_length=50, blank=True, null=True) 
    is_agent = models.NullBooleanField(default=False, null=True) 
    short_bio = models.CharField(max_length=200, null=True, blank=True) 
    contacts = models.ManyToManyField(ContactDetails) 

def __str__(self): 
    return self.first_name + ' ' + self.last_name 

def get_absolute_url(self): 
    return reverse('users:detail', kwargs={'username': self.username}) 
입니다

올바른 방향으로 어떤 도움이나 요령이 좋을 것입니다!

고맙습니다.

답변

2

며칠 후에, 나는 돌아 왔고 바보 같은 실수를 발견했습니다!

내 Form.py에서 암호 필드는 암호가 아닌 'password1'이라고합니다!

class SignupForm(forms.Form): 
    first_name = forms.CharField(max_length=30) 
    last_name = forms.CharField(max_length=30) 

def __init__(self, *args, **kwargs): 
    super(SignupForm, self).__init__(*args, **kwargs) 
    self.helper = FormHelper() 
    self.helper.form_show_labels = False 
    self.helper.field_class = '' 
    self.helper.layout = Layout(
    Field('first_name', placeholder='First Name', autocomplete='off'), 
    Field('last_name', placeholder='Last Name', autocomplete='off'), 
    Field('email', placeholder='Email', autocomplete='off'), 
    Field('password1', placeholder='Password', autocomplete='off'), 

    Div(Submit('Register', 'Register', css_class='btn btn-primary block full-width m-b'), css_class='form-group'), 
    HTML('<p class="text-muted text-center"><small>Already have an account?</small></p>'), 
    Div(HTML('<a class ="btn btn-sm btn-white btn-block" href="' + reverse('account_login') + ' " > Login </a>'),css_class='form-group') 
) 

def signup(self, request, user): 
    user.first_name = self.cleaned_data['first_name'] 
    user.last_name = self.cleaned_data['last_name'] 
    user.save() 

멋진 일!