Данные сессии не обновляются - расшифровка ключа сессии

Нужна помощь с сомнением, связанным с Django. Я пытаюсь разработать веб-приложение для электронной коммерции, используя Django. Когда я пытаюсь получить данные сессии после нажатия на кнопку 'Add to Basket', он показывает ответ от метода 'init', а не от метода 'add'.

Это кнопка:

          <button type="button" id="add-button" value="{{product.id}}" class="btn btn-secondary btn-sm">Add to Basket</button>

Ajax Script:

          <script>
              $(document).on('click', '#add-button', function (e) {
                  e.preventDefault();
                  $.ajax({
                      type: 'POST',
                      url: '{% url "basket:basket_add" %}',
                      data: {
                          productid: $('#add-button').val(),
                          csrfmiddlewaretoken: "{{csrf_token}}",
                          action: 'post'
                      },
                      success: function (json) {

                      },
                      error: function (xhr, errmsg, err) {}
                  });
              })
          </script>

ФайлView.py:

          from django.shortcuts import render
          from django.shortcuts import get_object_or_404
          from django.http import JsonResponse
          from store.models import Product
          from .basket import Basket

          def basket_summary(request):
              return render(request, 'store/basket/summary.html')

          def basket_add(request):
              basket = Basket(request)
              if request.POST.get('action') == 'post':
                  product_id = int(request.POST.get('productid'))
                  product = get_object_or_404(Product, id=product_id)
                  basket.add(product=product)
                  response = JsonResponse({'test':'data'})
                  return response
              

файл urls.py: from django.urls import path

          from . import views

          app_name = 'basket'
          urlpatterns = [
              path('', views.basket_summary, name='basket_summary'),
              path('add/', views.basket_add, name='basket_add'),
          ]

Класс корзины: class Basket():

              def __init__(self, request):
                  self.session = request.session
                  basket = self.session.get('skey')
                  if 'skey' not in request.session:
                      basket = self.session['skey'] = {}
                  self.basket = basket

              def add(self, product):

                  product_id = product.id

                  if product_id not in self.basket:
                      self.basket[product_id] = {'price': str(product.price)}

                  self.session.modified = True    
                  

context_processors.py

            from .basket import Basket


            def basket(request):
                return {'basket': Basket(request)}
                

Также добавил это в шаблоны.

Когда я пытаюсь расшифровать его

s= Session.objects.get(pk='uomjko48iiek9er7jw1gah2ayrvoc5pv')

s.get_decoded()

Я получаю {'skey': {}}, а не идентификатор товара и цену.

Вернуться на верх