This work :
productId:  1 action:  add
cart.js:9 USER: setraco
cart.js:20 setraco is logged in ! Sending data ...

cart.js:22
Here is the errors that I'm trying without success:

POST http://127.0.0.1:8000/update_Item/ 403 (Forbidden)
updateUserOrder @ cart.js:22
(anonymous) @ cart.js:14

VM29:2 Uncaught (in promise) SyntaxError: Unexpected token '<', "
<!DOCTYPE "... is not valid JSON
Promise.then (async)
updateUserOrder @ cart.js:33
(anonymous) @ cart.js:14

Here my codes are :
cart.js side code:

var upadateButtons = document.getElementsByClassName('update-cart')


for( i = 0; i < upadateButtons.length; i++){
    upadateButtons[i].addEventListener('click', function(){
        var productId = this.dataset.product
        var action = this.dataset.action
        console.log('productId: ',productId, 'action: ',action)
        console.log('USER:', user)

        if (user == 'AnonymousUser'){
            console.log(user, 'is not authenticated !')
        }else{
            updateUserOrder(productId, action)
        }
    })
}

function updateUserOrder(productId, action){
    console.log(user, 'is logged in ! Sending data ...')
    var url = "/update_Item/"
    fetch(url,{
            method:"post",
            headers:{
                "Content-Type":"application/json",
                "X-CSRFToken" :"csrftoken",
            },
            body:JSON.stringify({url, 'productId:': productId,
'action: ':action})
            })
            .then((response) => {
                return response.json()
            })
            .then((data) => {
                console.log('data: ', data)
                location.reloads()
            })
}

html side update button :

<button data-product={{product.id}} data-action="add"
      class="btn btn-outline-secondary add-btn update-cart">
         Ajouter au Panier
</button>

views.py side :


def updateItems(request):
    data = json.loads(request.body)
    productId = data['productId']
    action = data['action']
    print('Action: ', action)
    print('Product Id: ', productId)
    customer = request.user.customer
    product = Product.objects.get(id=productId)
    order, created = Order.objects.get_or_create(customer=customer,
complete=False)
    orderItem, created = OrderItem.objects.get_or_create(order=order,
product=product)

    if action == 'add':
        orderItem.quantity = (orderItem.quantity + 1)
    elif action == 'remove':
        orderItem.quantity = (orderItem.quantity - 1)

    orderItem.save()

    if orderItem.quantity <= 0:
        orderItem.delete()
    return JsonResponse('Item was updated', safe=False)

urls :

from django.urls import path
from . import views
from django.conf.urls.static import *


urlpatterns = [
    #path('admin/', admin.site.urls),
    path('', views.store, name="store"),
    path('cart/', views.cart, name="cart"),
    path('checkout/', views.checkout, name="checkout"),

    path('update_Item/', views.updateItems, name="update_Item"),
]



Thanks for your help.

*dieumercidram...@gmail.com <dieumercidram...@gmail.com>*
*dramspy...@gmail.com <dramspy...@gmail.com> *
*+243 82 83 010 21*

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CADDd42bBDg78Pu7YbLpKRWrRjyuwkoY0NBnx3%3DX%3Dt-Tt5Od%2B7w%40mail.gmail.com.

Reply via email to