Django - метод .ajax () не работает должным образом - PullRequest
0 голосов
/ 21 сентября 2018

Я пишу Ajax-код для попадания в базу данных для редактирования экземпляров модели.Но код не работает хорошо.Первый оператор alert работает, но не другие операторы alert.Код в success или error не отвечает.Кажется, все хорошо.Я понятия не имею, как это случилось, хотя.

book / detail.html:

<script>
    $(document).ready(function () {
        $("#add").click(function() {
            alert('clicked');
            $.ajax({
                url: '{% url "cart:add_to_cart" %}',
                // handle a successful response
                success: function (response) {
                    alert("Testing.");
                    ("#cartButton").text("Cart" + "(" + response.quantity + ")");
                },
                error: function (response) {
                    alert('Got an error');
                }
            });
        });
    });
</script>

cart.view.py:

def add_books(request):
    c = Cart.objects.get(user=request.user)
    q = request.GET.get('quantity')
    book_id = request.GET.get('bookID')

        <some code here>

    response = {
        'quantity': BooksInCart.objects.filter(cart=c).aggregate(item_quantity=Sum('quantity'))['item_quantity']
    }
    return JsonResponse(response)

cart.urls:

app_name = 'cart'
urlpatterns = [
    path('add_books/', views.add_books, name='add_to_cart')
]

1 Ответ

0 голосов
/ 21 сентября 2018

Если вы изменяете данные в базе данных, вы должны использовать пост-тип запроса.Включите method: 'POST' и токен csrf в ваш вызов ajax, а затем проверьте наличие запроса типа поста в вашем представлении: if request.method == 'POST':

Чтобы установить токен csrf, поместите {% csrf_token %} в шаблон, чтобывизуализируйте токен, а затем пользователя JQuery загрузите значение токена в часть data вызова ajax: data = {'csrfmiddlewaretoken': $('[name="csrfmiddlewaretoken"]').val()}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...