Как создать оператор if в перенаправлении для изменения модели Django

Я пытаюсь создать оператор if в моем Django представлении, который определяет, когда я перенаправлен на url моего полного заказа. Я хочу сделать это, потому что я хочу изменить поле 'complete' моей Django модели Order на true. Мое перенаправление происходит из функции javascript в моей интеграции с paypal.

checkout.html

    {% extends 'base.html' %}
{% load crispy_forms_tags %}



{% block content %}
<h1>Checkout</h1>
<div class='container'>
    <div class='row'>
        <div class='col-6'>
            <form action="" method='post' id='payement-form'>
                {% csrf_token %}
                <!-- {{ form|crispy }} -->
                <div class='col-12' id='paypal-button-container'></div>
            </form>
            <script
                src="https://www.paypal.com/sdk/js?client-id="> // Required. Replace YOUR_CLIENT_ID with your sandbox client ID.
                </script>

            <script>

                function redirect() {
                    var url = "{% url 'complete-order' %}"

                    window.location.href = url

                }
                paypal.Buttons({
                    createOrder: function (data, actions) {
                        return actions.order.create({
                            purchase_units: [{
                                amount: {
                                    value: '0.01'

                                }
                            }]
                        });
                    },
                    onApprove: function (data, actions) {
                        // This function captures the funds from the transaction.
                        return actions.order.capture().then(function (details) {
                            // This function is the redirect
                            redirect()
                            alert('Transaction completed by ' + details.payer.name.given_name);
                        });
                    }
                }).render('#paypal-button-container');
            </script>


        </div>

{% endblock content %}

views.py

    @login_required(login_url='login')
def checkout(request):
    order = Order.objects.get(user=request.user, complete=False)
    context = {
        'order': order
    }
    return render(request, 'videogames/checkout.html', context)


@login_required(login_url='login')
def paymentComplete(request):
    order = Order.objects.get(user=request.user, complete=True)
    context = {
        'order': order
    }
    return render(request, 'videogames/complete.html', context)

Существует множество способов, которые следует выбирать в соответствии с вашим проектом.

  1. перед перенаправлением, в представлении, вызовите ссылку с помощью Ajax для изменения статуса
  2. .
@login_required(login_url='login')
def paymentSetComplete(request):
        order = Order.objects.get(id=request.payment_id=,user=request.user, complete=False)
        order.complete=True
        order.save() # or update directly
        return 
  1. Измените статус, когда запрос на загрузку страницы complate был отправлен django
  2. .

Я не знаю, какие меры вы предприняли для защиты и предотвращения поддельных покупок. Но знаю, что пользователи могут повторять запросы, поступающие на сервер

Вернуться на верх