Django多形式1视图..形式错误问题

时间:2013-06-11 17:37:11

标签: python django forms views

我在一个视图中显示表单错误时遇到了一些麻烦。我现在是一名学生,已经参加了2个学期的python课程。我决定自己学习一些Django。

我遇到的问题是我尝试进行多步骤处理,以便用户可以发布图书。但是,我想在同一个网址中做到这一点。因此,当用户完成第一个表单并单击提交时,它将继续下一个表单,但URL不会更改。我已经想到了这一点。我的问题是,当我到达第二个表单时,已经显示的表单错误与表单一起出现。昨天我花了3个小时试图弄明白,没有运气。 所以,如果有人能伸出援助之手,那就太好了!谢谢!

def book_post(request):
    if request.method == 'POST':
        formone = bookFormOne(request.POST)        
        formtwo = bookFormTwo(request.POST, request.FILES)
        if formtwo.is_valid():   
            #.....do form2 valid stuff
            return HttpResponseRedirect('/success')        
        if formone.is_valid() :
            #....do form1 valid stuff
            #formtwo = bookFormTwo()..if i add this the errors wont display but then    errors from the first form spill over and it wont allow the second form to be valid...###

            args = {'form2':formtwo,'isbn':isbn,'subject':subject}
            args.update(csrf(request)) 
            return render_to_response('book_post_form2.html', args,context_instance=RequestContext(request))        

        else:
            args = {}
            args['form'] = formone
            args['form2'] = formtwo
            args.update(csrf(request))            


    else: 
        form = bookFormOne()
        args = {'form':form}
        args.update(csrf(request)) 
    return render_to_response('book_post.html', args,context_instance=RequestContext(request)) 

1 个答案:

答案 0 :(得分:1)

您没有任何显示空格式的情况。将request.POST传递给表单并调用is_valid()将导致验证运行,这可能不是您在用户POSTS formone时的意图。正如@karthikr建议的那样,你需要找出一种方法来告诉你是什么步骤,这样你才能验证并显示相应的表格。

最简单的方法可能是在渲染book_post.html时添加类似args ['step'] = 1的内容,在渲染book_post_form2.html时添加args ['step'] = 2。然后使用隐藏的表单字段在POST上再次将该变量传回服务器,并检查它以确定需要验证的表单。