Estoy tratando de crear una declaración if en mi vista de Django que detecte cuándo soy redirigido a la URL de mi pedido completo. Quiero hacer esto porque me gustaría cambiar el campo 'completo' de mi orden de modelo de Django a verdadero. Mi redirección proviene de una función de javascript en mi integración de paypal.
pago.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 %}vistas.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)Hay muchas formas que se deben seleccionar de acuerdo a su proyecto.
@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 returncomplate la página completa se envió a djangoNo sé qué medidas ha tomado para asegurar y prevenir las compras falsas. Pero sepa que los usuarios pueden repetir las solicitudes que llegan al servidor.