我有一個簡單的表單,提交時重定向到成功頁面。django - POST後重定向時傳遞信息
我希望能夠在我的成功頁面中使用上一步中提交的數據。
據我所知,重定向時無法傳遞POST數據,那麼如何實現這一點?
目前我不得不直接從相同的URL返回成功頁面,但這會導致刷新時可怕的重新提交數據。
正在使用request.session
唯一的出路?
我有一個簡單的表單,提交時重定向到成功頁面。django - POST後重定向時傳遞信息
我希望能夠在我的成功頁面中使用上一步中提交的數據。
據我所知,重定向時無法傳遞POST數據,那麼如何實現這一點?
目前我不得不直接從相同的URL返回成功頁面,但這會導致刷新時可怕的重新提交數據。
正在使用request.session
唯一的出路?
您可以:
更新:
關於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
你指的是哪個對象?有沒有包含可以評估的POST數據的對象? – Acorn 2011-02-06 10:57:35
是的,它被命名爲request.POST.data – 2011-02-06 11:29:56
我一直這樣做,不需要會話對象。這是一種非常常見的模式POST-redirect-GET。通常我做的是:
這樣保存後POST和保存後重定向。
一個例子來看,假設一樣的東西模型:
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)
任何機制,允許您保留請求之間的數據會做(因爲這是你問的結束)。會話可能是最簡單的,但絕對不是唯一的方法。 – 2011-02-06 18:20:30