2016-02-09 43 views
0

我正在尝试使用FormWizard为新用户进行注册。在完成所有验证后,我目前在传递密码方面存在问题。 我试图做很多方法,但总是得到一个错误。回溯列出如下:Django FormWizard。需要set_password

回溯:

File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response 
    132.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "C:\Python27\lib\site-packages\django\views\generic\base.py" in view 
    71.    return self.dispatch(request, *args, **kwargs) 
File "C:\Python27\lib\site-packages\formtools\wizard\views.py" in dispatch 
    237.   response = super(WizardView, self).dispatch(request, *args, **kwargs) 
File "C:\Python27\lib\site-packages\django\views\generic\base.py" in dispatch 
    89.   return handler(request, *args, **kwargs) 
File "C:\Python27\lib\site-packages\formtools\wizard\views.py" in post 
    300.     return self.render_done(form, **kwargs) 
File "C:\Python27\lib\site-packages\formtools\wizard\views.py" in render_done 
    357.         **kwargs) 
File "C:\Users\U-60.DOM\Source\Repos\Casting\Casting\Casting\Casting\app\views.py" in done 
    940.   passd=past_data.get('password1') 

Exception Type: AttributeError at /registration_steps 
Exception Value: 'NoneType' object has no attribute 'get' 

forms.py

class ApplicantForm1(forms.ModelForm): 
    password1 = forms.CharField(
     label='Password', 
     widget=forms.PasswordInput 
    ) 
    password2 = forms.CharField(
     label='confirm', 
     widget=forms.PasswordInput 
    ) 
    def clean_password2(self): 
     password1 = self.cleaned_data.get('password1') 
     password2 = self.cleaned_data.get('password2') 
     if password1 and password2 and password1 != password2: 
      raise forms.ValidationError('Passwords dont match') 
     return password2 
    class Meta: 
     model = ExtUser 
     fields = ['email','firstname', 'lastname', 'middlename', 'date_of_birth', 'gender', 'family_position', 
        'driver_license', 'driver_license_category', 
        ] 

views.py

class ApplicantWizard(SessionWizardView): 
def get_template_names(self): 
    return [TEMPLATES_REG[self.steps.current]] 
def get_form_instance(self, step): 
    # if self.instance is None: 
    #  self.instance = ExtUser() 
    return self.instance 
def done(self, form_list, **kwargs): 
    past_data = self.get_cleaned_data_for_step('1') 
    passd=past_data.get('password1') 
    user = self.instance.save() 
    user.set_password(passd) 

     return render_to_response('app/successpage.html', { 
      'title':"Registration complited" , 
     }) 
+0

回溯添加 –

回答

0

没有完全回溯我会假设它是因为如果您在创建用户之前尝试设置密码。

试着去做;

def done(self, form_list, **kwargs): 
     past_data = self.get_cleaned_data_for_step('1') 
     passd=past_data(['password1']) 
     user = self.instance.save() 
     user.set_password(passd) 

     return render_to_response('app/successpage.html', { 
      'title':"Registration completed" , 
     }) 

编辑

的问题是在这之前,但上面的应该还是有效的。

你打电话past_data当它是一个字典我相信,通过get_cleaned_data_for_step返回,所以你需要做的passd=past_data.get('password1')

+0

不,didnt帮助。回溯添加 –

+0

@AlexeyKostopravkin正确的,问题出现之前,所以检查我的更新 - 你的过去的数据是一个字典,所以你需要改变它。但要小心那个'set_password'调用,因为我认为我之前关于用户必须存在的观点仍然是正确的。 –

+0

根据意见完成更改(添加在问题代码中)。 “NoneType”对象的错误更改没有属性“get”。添加了新的追溯。 –