仍然是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上。
答案 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,
})