Djangoroidの奮闘記

python,django,angularJS1~三十路過ぎたプログラマーの奮闘記

Django e-commerce part67 Checkout Finalize View

注文を確定するviewの作成

carts/views.py にcheckoutfinalview classを追記する。

class CheckoutFinalView(View):
    def post(self, request, *args, **kwargs):
        return redirect("checkout")

    def get(self, request, *args, **kwargs):
        return redirect("checkout")

urls.py に設定する

    url(r'^checkout/final/$', CheckoutFinalView.as_view(), name='checkout_final'),

checkout_view.htmlに追記

<form method='POST' action="{% url 'checkout_final' %}">{% csrf_token %}
<input type='hidden' name='payment_token' value='ABC' />
<p><b><button type='submit'>注文を確定する</button></b>
</p>

ポイント

  • input payment_tokenは、支払う時のtokenを自動で入力するためのtagだと思われる。

carts/views.py

class CheckoutFinalView(View):
    def post(self, request, *args, **kwargs):
        print (request.POST.get("payment_token"))
        return redirect("checkout")

注文確定するボタンをクリックすると、ターミナルに、ABC というpayment_tokenのvalueが表示されるようになる。

carts/views.pyにさらに追記する。

class CheckoutFinalView(CartOrderMixin, View):
    def post(self, request, *args, **kwargs):
        order = self.get_order()
        if request.POST.get("payment_token") == "ABC":
            print (order.cart.items.all())
        return redirect("checkout")

payment_tokenが指定した文字列と等しい場合に、orderのitemを表示する。