python - Django多表单1 View ..表单错误问题

标签 python django forms view

我在一个 View 中显示表单错误时遇到了一些问题。我目前是一名学生,已经学习了两个学期的 Python 类(class)。我决定自学一些 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)) 

最佳答案

您没有任何显示空 formtwo 的情况。将 request.POST 传递到表单并调用 is_valid() 将导致验证运行,这可能不是您在用户 POSTS formone 时想要的。正如 @karthikr 所建议的,您需要找到一种方法来告诉您处于哪个步骤,以便您可以验证并显示适当的表单。

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

关于python - Django多表单1 View ..表单错误问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17050302/

相关文章:

python - 如何匹配 json 汤中的确切单词?

python - 将 Queryset 从装饰器传递给函数

python - 我的路由中需要什么 base_name 参数才能使这个 Django API 工作?

python - 在 python 中使用 pandas 对列表元素进行分组

Python 和 curl 问题

Python 中的文件写入不会立即发生(刽子手游戏)

javascript - 带有 Form 和 $setPristine 的 Angular 1.5 组件

python - Django:如何读取模型字段的 db_column 名称

php - 删除带有复选框的表单不起作用

javascript - 提交后重新填写表单后出现 Selenium StaleElementException