этот код взят из примера книги 2, что очень кстати.вопрос здесь в том, как нам удалось изменить сеанс запроса, хотя мы не изменили его, кроме как в методе сохранения (((и он находится в сеансе корзины, который в первой строке после init )))я вижу, что мы сделали копию из сессионного словаря в этой строке
self.session = request.session
class Cart(object):
def __init__(self, request):
self.session = request.session
cart = self.session.get(settings.CART_SESSION_ID)
if not cart:
cart = self.session[settings.CART_SESSION_ID] = {}
self.cart = cart
def add(self, product, quantity=1, update_quantity=False):
'''
Add a product to the cart or update it is quantity
'''
product_id = product.id
if not product_id in self.cart:
self.cart[product_id] = {'quantity': 0,
'price': str(product.price)}
if update_quantity:
self.cart[product_id]['quantity'] = quantity
else:
self.cart[product_id]['quantity'] += quantity
self.save()
def save(self):
self.session['modified'] = True
, для более подробного объяснения вы можете найти весь код проекта здесь code
Мне удалось увидеть сеанс пользователя, когда я передал его из контекста в шаблон, и он уже изменен