django - 在回发后重新显示一个表单但是没有绑定

时间:2011-11-01 07:00:47

标签: django forms

仍然是python和django的新手,虽然学习; - )

我的视图旨在显示包含联系信息的表单。在成功处理表单并保存/创建对象后,我想再次显示相同的视图(添加另一个联系人),但添加了一条消息,说明之前的联系信息已成功保存。

Django return redirect() with parameters我了解到,使用传递参数重定向到视图的方法是再次调用视图并显示响应。

我的观点如下:

def addabentry(request, entrytype, messages=[]):
""" Presents form to create a company listing, then enters company into database"""

在回发并成功保存数据后,我再次按如下方式调用视图:

messages = ["%s %s has been added." % (entrytype, entry.name)]
response = addabentry(request, entrytype=entrytype, messages=messages)
return HttpResponse(response)

但是,第二轮的表单似乎与之前的数据绑定,可能是因为POST参数仍然在我传递给视图的请求对象中。

有没有办法第二次解开表格?或者,更有可能的是,有更好的方法来做我想要的吗?我是否需要使用引用的SO问题中提到的request.sessions?

感谢您的帮助!

W上。

2 个答案:

答案 0 :(得分:1)

您需要messages框架。

答案 1 :(得分:1)

我认为你可能会使事情变得比他们需要的复杂得多。

来自the docs

中的基本表单示例
def contact(request):
    message = ''
    if request.method == 'POST': # If the form has been submitted...
        form = ContactForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            # Process the data in form.cleaned_data
            # ...
            # instead of redirecting here, create a new blank form, and add a message
            form = ContactForm()
            message = "contact successfully created"
    else:
        form = ContactForm() # An unbound form

    return render_to_response('contact.html', {
        'form': form,
        'message': message,
    })