는()

2017-12-28 35 views
2

나는 장고 폼 마법사를는()

if form.is_valid(): 

을 복제하는 것을 시도하고있다. 내가 form_list을 인쇄하면 내가이

odict_values([<UserAddonForm bound=True, valid=True, fields=(fav_food;fav_drink;first_name,last_name;email)>,ContactForm3 bound=True, valid=True, fields=(info1;info2;message)>]) 

얻을

class ContactWizard(SessionWizardView): 

def get_template_names(self): 
    return [TEMPLATES[self.steps.current]] 

def done(self, form_list, **kwargs): 
    if self.request.method == 'POST': 
     print(form_list) 
     process_form_data(form_list) 
    return HttpResponseRedirect('../home') 

def process_form_data(form_list): 
    if form.is_valid(): 
     form_data = [form.cleaned_data for form in form_list] 

     first_name = form_data[0]['first_name'] 
     last_name = form_data[0]['last_name'] 
     email = form_data[0]['email'] 

     fav_food = form_data[0]['fav_food'] 
     fav_drink = form_data[0]['fav_drink'] 

     user = User.objects.create_user(email) 
     user.first_name = first_name 
     user.last_name = last_name 
     user.email = email 
     user.save() 

     user_addon = UserAddon.objects.create(user=user,fav_food=fav_food,fav_drink=fav_drink) 
     user_addon.save() 

     return form_data 

과 내가하려고하면 실행 :이 코드가

(이 문제는 마법사와 아무 상관이 안됩니다) 그냥

form.is_valid() 

와 나는

를 얻을 수
Exception Value: name 'form' is not defined 

어떻게하면 form.is_valid()와 동등한 효과를 얻을 수 있습니까?

감사

답변

2

당신이 전달하는 form_list 그 시점에서 존재하지 않는 기능 process_form_data하지만 (form.is_valid()에 의해) 이름 form에 대해 확인합니다. form_list 가정

는 반복 가능한, 당신은 그것을 반복하고 양식 순차적으로 처리 할 수 ​​있습니다

def process_form_data(form_list): 
    for form in form_list: 
     if form.is_valid(): 
      form_data = form.cleaned_data 
      first_name = form_data[0]['first_name'] 
      last_name = form_data[0]['last_name'] 
+0

그레이트 감사합니다! first_name, last_name 등은 form_data = form.cleaned_data에 들여 쓰기해야합니다 (if에서와 같이)? 또는 그것이 아래에 있어야합니까? –

+1

@Midi_ 내 수정 사항을 확인하십시오. – heemayl

+0

완벽한 도움을 주셔서 감사합니다. –