我有一个简单的表单,当提交重定向到成功页面时。
我希望能够在我的成功页面中使用上一步中提交的数据。
据我所知,重定向时无法传递POST数据,那么如何实现呢?
目前我不得不直接从同一个网址返回成功页面,但这会在刷新时导致可怕的重新提交数据。
使用request.session
是唯一的方法吗?
答案 0 :(得分:8)
我一直这样做,不需要会话对象。这是一种非常常见的模式POST-redirect-GET。通常我所做的是:
这样您可以在保存后保存POST并重定向。
示例视图,假设 thingies的模型:
def all_thingies(request, **kwargs):
if request.POST:
form = ThingieForm(request.POST)
if form.is_valid():
thingie = form.save()
return HttpResponseRedirect(thingie.get_absolute_url())
else:
form = ThingieForm()
return object_list(request,
queryset = Thingie.objects.all().order_by('-id'),
template_name = 'app/thingie-list.html',
extra_context = { 'form': form },
paginate_by = 10)
答案 1 :(得分:7)
你可以:
<强>更新强>
关于pt。上面的1,我的意思是你可以做(在POST处理程序中):
my_object = MyModel.objects.create(...)
request.session['my_object_id'] = my_object.id
或者您可以尝试传递整个对象(它应该可以工作,但我不是100%确定):
my_object = MyModel.objects.create(...)
request.session['my_object'] = my_object