Как сохранить несколько переменных в сессии Django - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь создать корзину для покупок в django, которая не зависит от учетных записей пользователей.Я использую сессии Django.У меня проблема в том, что когда я пытаюсь добавить новый элемент в сеанс и распечатывать список элементов в сеансе, распечатывается только самый новый элемент вместо всего списка элементов в сеансе.

def add_to_cart(request,pk,slug):
    product = get_object_or_404( Product, pk=pk,)
    product_document = {
       'title': product.title,
       'price': product.price,
       }
    request.session['cart'][str(product.id)] = product_document
    print(request.session['cart'])
    return render(request,'selling/cart.html')

Допустим, я добавляю ботинки за 400 долларов, а затем носки по 10 долларов, когда я распечатываю сессию, вместо того, чтобы получать оба элемента в словаре, распечатываются только носки по 10 долларов.

1 Ответ

1 голос
/ 01 мая 2019

Вы каждый раз сбрасываете корзину, написав:

request.session['cart'] = {}

Вы можете предотвратить создание нового словаря, если он уже есть, с помощью

request.session<b>.set_default('cart', {})</b>

Мы можем даже объединить команду здесь и добавить элемент в одну строку, например:

request.session.set_default('cart', {})[str(product.id)] = product_document
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...