如何在 django 的电子商务应用程序中呈现订单完成页面
How to render order completed page in ecommerce app in django
我目前正在构建电子商务风格的应用程序。我有一个处理 POST 数据(订单信息)的视图 new_order。之后,它将 HttpResponseRedirect 渲染到 order_complete,它只渲染 order_complete.html 模板。
将订单号传递给模板的最佳方式是什么。这是我所做的:
messages.success(request, 'Your order number is %s ' % order.order_id)
return HttpResponseRedirect(reverse('orders:order_complete_url'))
这很好用,但是,由于消息的性质,它会在页面刷新时消失。这是一种理想的行为还是有更好的方法来实现它?另外,我将如何将例如订单详细信息、总计等传递给模板?
Django 的 messages framework
允许我们在处理表单或某些其他类型的用户输入后向用户显示 一次性通知消息 。它临时将消息存储在一个请求中并检索它们以在后续请求(通常是下一个)中显示。
因此,当您刷新页面时,该消息将消失并且不会再次显示。
您可以使用 session
来存储您希望在后续请求中使用的变量。
例如:
request.session['order_number'] = order.order_id # set in session
return HttpResponseRedirect(reverse('orders:order_complete_url'))
这将在会话中设置 order_number
。在这里,您还可以在 order_complete_url
视图中设置您需要的其他变量。
然后在您的 order_complete_url
视图中,您可以通过以下方式访问 order_number
:
order_number = request.session['order_number'] # retrieve order number from session
您可以将此 order_number
传递给 context
,然后在模板中显示。现在,当您刷新页面时,order_number
将显示在模板中。
我目前正在构建电子商务风格的应用程序。我有一个处理 POST 数据(订单信息)的视图 new_order。之后,它将 HttpResponseRedirect 渲染到 order_complete,它只渲染 order_complete.html 模板。
将订单号传递给模板的最佳方式是什么。这是我所做的:
messages.success(request, 'Your order number is %s ' % order.order_id)
return HttpResponseRedirect(reverse('orders:order_complete_url'))
这很好用,但是,由于消息的性质,它会在页面刷新时消失。这是一种理想的行为还是有更好的方法来实现它?另外,我将如何将例如订单详细信息、总计等传递给模板?
Django 的 messages framework
允许我们在处理表单或某些其他类型的用户输入后向用户显示 一次性通知消息 。它临时将消息存储在一个请求中并检索它们以在后续请求(通常是下一个)中显示。
因此,当您刷新页面时,该消息将消失并且不会再次显示。
您可以使用 session
来存储您希望在后续请求中使用的变量。
例如:
request.session['order_number'] = order.order_id # set in session
return HttpResponseRedirect(reverse('orders:order_complete_url'))
这将在会话中设置 order_number
。在这里,您还可以在 order_complete_url
视图中设置您需要的其他变量。
然后在您的 order_complete_url
视图中,您可以通过以下方式访问 order_number
:
order_number = request.session['order_number'] # retrieve order number from session
您可以将此 order_number
传递给 context
,然后在模板中显示。现在,当您刷新页面时,order_number
将显示在模板中。