Я пытаюсь создать сайт электронной коммерции с Django. Я хочу использовать ajax для обработки моей формы заказа. Когда я добавил Ajax, после заполнения формы и нажатия кнопки «Отправить», я вижу, что моя форма и данные не сохраняются при переходе к моему администратору.
Он также не перенаправляется на return HttpResponseRedirect(reverse(str(redirect))+"?address_added=True")
скорее он перенаправляется на http://127.0.0.1:8000/checkout/?csrfmiddlewaretoken=u6hDPBVuOZbDmoHvRFWb2PvfK1YamCIKGSaDkKdVTviWvJODgY5lM6rKppoW1oeP&address=123+Main+Street&address2=&state=MA&country=USA&zipcode=55525&phone=%28877%29+314-0742&billing=on
.
Что не так?
Мои аккаунты.views.py:
from django.shortcuts import render, HttpResponseRedirect, Http404
from django.contrib.auth import logout, login, authenticate
from django.contrib import messages
from .forms import LoginForm, RegistrationForm, UserAddressForm
from django.urls import reverse
def add_user_address(request):
try:
redirect = request.GET.get("redirect")
except:
redirect = None
if request.method == "POST":
form = UserAddressForm(request.POST)
if form.is_valid():
new_address = form.save(commit=False)
new_address.user = request.user
new_address.save()
if redirect is not None:
return HttpResponseRedirect(reverse(str(redirect))+"?address_added=True")
else:
raise Http404
Мои urls.py:
path('ajax/add_user_address/', accounts_views.add_user_address, name='ajax_add_user_address')
Мой заказ. html:
<div class="content-section">
<form method="POST" action='{% url "ajax_add_user_address" %}?redirect=checkout'>
{% csrf_token %}
<fieldset class="form-group">
{{ address_form|crispy }}
<input type="submit" class="btn btn-dark" value="Place Order"/>
</fieldset>
</form>
</div>
Мои заказы.views.py:
from accounts.forms import UserAddressForm
from accounts.models import UserAddress
@login_required()
def checkout(request):
try:
the_id = request.session['cart_id']
cart = Cart.objects.get(id=the_id)
except:
the_id = None
return redirect(reverse("myshop-home"))
try:
new_order = Order.objects.get(cart=cart)
except Order.DoesNotExist:
new_order = Order(cart=cart)
new_order.cart = cart
new_order.user = request.user
new_order.order_id = id_generator()
new_order.save()
except:
return redirect(reverse("cart"))
address_form = UserAddressForm()
if new_order.status == "Finished":
#cart.delete()
del request.session['cart_id']
del request.session['items_total']
return redirect(reverse("cart"))
context = {"address_form": address_form, "cart": cart}
template = "orders/checkout.html"
return render(request, template, context)