2011-11-01 32 views
0

还是新的Python和Django的以后,虽然学习;-)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.

回答

1

你需要messages框架。

+0

烨,也可能有些forsmets以允许多个接触形式来动态加载的页面上(使用javascript也许):https://docs.djangoproject.com/ en/dev/topics/forms/formsets/ –

+0

谢谢!还会查看消息/会话 – Westerley

+0

调查了更多的消息框架后,它确实似乎是一个更好的解决方案。相应地改变了接受的答案。谢谢! – Westerley

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, 
    }) 
+0

我的天啊。这很明显(现在它指出了!)。谢谢! – Westerley

+0

@韦斯特利是的,如果你想重新发明轮子,那真的很不错。 – DrTyrsa

+0

对不起 - 我不关注... – Westerley

相关问题