2009-08-09 49 views
0

即時再問:),我不知道如何做到這一點。Django驗證並返回預覽URL?

我的英語不太好,但虐待嘗試問這個:

如何生病驗證表單,並返回到預覽URL(同一視圖的形式),並顯示驗證錯誤?IM問這個因爲我有2個窗體,第一個窗體的動作是第二個窗體(POST),但是在第二個窗體(視圖?)中,我需要驗證第一個窗體,如果第一個窗體有效,我想顯示第二個窗體否則顯示錯誤的第一種形式。

我不知道如果我清楚,我很抱歉。

IM想着這個:

def secondForm(request): 
    if request.method =='POST': 
     form = FirstForm(request.POST) 
     if form.is_valid(): 
      fields = request.POST.copy() 
      # showing the second form?? with x differents fields, i have 2. 
      if fields['xvalue']=='1': # this is from radio buttons 
      form2 = xSecondForm() 
      elif fields['xvalue']=='2': 
      form2 = ySecondForm() 
     else: 
     # here go back with erros msgs???? 
     #return render_to_response('firstFormTemplate.html',{'form': form}, context_instance=RequestContext(request)) 
    else: 
     #return something or go back ??? 

謝謝你們 PD:我很高興,即時通訊編碼的Django +蟒蛇:d

回答

3

是的,formwizard可能是你的答案,但你可以用視圖中的一些邏輯來做。

喜歡的東西:

def your_view(request): 
    context = {} 
    data = request.method == 'POST' and request.POST or None 
    form = FirstForm(data=data) 
    # If the first form is valid, build the second. 
    if form.is_valid(): 
     if form.cleaned_data['xvalue'] == 1: 
      form2 = xSecondForm(data=data) 
     else: 
      form2 = ySecondForm(data=data) 
     context['form2'] = form2 
    # If both forms are valid, everything is done. 
    if form.is_valid() and form2.is_valid(): 
     # TODO: put save/processing logic here 
     # Now redirect. 
     return http.HttpResponseRedirect(...) 
    # If we get here, either there hasn't been a post yet, the second form hasn't 
    # been entered, or there was an error in either form. 
    context['form'] = form 
    return render_to_response(...) 
0

好吧,夥計們,我認爲MI解決方案FormWizard :)

但我不清楚與我的第二種形式,因爲我需要以不同的方式顯示第二種形式,如果在無線電選定的選項是爲了或多或少的領域(第二種形式)

;(

0

我想你想使用process_step()做關於如何/什麼在你的第二個形式做一些顯示的邏輯。