0

我再次问:),我不知道怎么做。

我的英语不太好,但我试着问这个:

如何验证表单并返回预览 url(相同的视图表单)并显示验证错误?,我问这个是因为我有 2 个表单,第一个表单的操作将转到第二个表单(POST),但是在这第二种形式(查看?)我需要验证第一种形式,如果第一种形式有效,我想显示第二种形式,否则我会显示第一种形式有错误。

我不知道我是否清楚,对不起。

我在想这个:

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 + python :D

4

3 回答 3

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(...)
于 2009-08-09T21:33:18.137 回答
0

好的,伙计们,我认为 mi 解决方案是 FormWizard :)

但我不清楚我的第二种形式,因为如果收音机中的选定选项用于更多或更少的字段(在第二种形式中),我需要以不同的方式显示第二种形式

;(

于 2009-08-09T16:34:25.993 回答
0

我想你想使用 process_step() 来做一些关于如何/什么在你的第二种形式中显示的逻辑。

于 2010-06-10T20:15:56.310 回答