Почему я не могу сохранить свои адреса? - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь создать сайт электронной коммерции с 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...