Данные сессии не обновляются - расшифровка ключа сессии
Нужна помощь с сомнением, связанным с 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': {}}, а не идентификатор товара и цену.