如何在django的电子商务应用程序中呈现订单完成页面

如何在django的电子商务应用程序中呈现订单完成页面,django,django-views,Django,Django Views,我目前正在构建一个电子商务风格的应用程序。我有一个处理POST数据(订单信息)的新订单视图。之后,它会呈现一个HttpResponseRedirect to order_complete,它只呈现order_complete.html模板 将订单号传递给模板的最佳方式是什么。以下是我所做的: messages.success(request, 'Your order number is %s ' % order.order_id) return HttpRespo

我目前正在构建一个电子商务风格的应用程序。我有一个处理POST数据(订单信息)的新订单视图。之后,它会呈现一个HttpResponseRedirect to order_complete,它只呈现order_complete.html模板

将订单号传递给模板的最佳方式是什么。以下是我所做的:

        messages.success(request, 'Your order number is %s ' % order.order_id)
        return HttpResponseRedirect(reverse('orders:order_complete_url'))  

但是,由于消息的性质,它会在页面刷新时消失。这是一个理想的行为还是有更好的方法来实现它?此外,我如何将订单详情、总计等传递到模板?

Django的
消息框架允许我们在处理表单或其他类型的用户输入后向用户显示一次性通知消息。它在一个请求中临时存储消息,并检索它们以在后续请求(通常是下一个请求)中显示。
因此,当您刷新页面时,该消息将消失,不再显示

您可以使用
session
存储希望在后续请求中使用的变量

例如:

request.session['order_number'] = order.order_id # set in session
return HttpResponseRedirect(reverse('orders:order_complete_url')) 
这将在会话中设置订单号。在这里,您还可以在
order\u complete\u url
视图中设置所需的其他变量

然后在您的
order\u complete\u url
视图中,您可以通过以下方式访问
order\u number

order_number = request.session['order_number'] # retrieve order number from session 

您可以将此
订单号
传递到
上下文
,然后在模板中显示。现在,当您刷新页面时,
订单号将显示在模板中。

谢谢!我现在就实施,然后再给你回复