2013-04-12 3 views
0

Я реализую корзину покупок, в которой хранятся идентификаторы элементов в списке в сеансе. мой метод добавления выглядит так:Сессия не обновляется в шаблоне?

def add_to_cart(request): 
    if request.method == 'POST': 
    if 'cart' not in request.session: 
     request.session['cart'] = [] 
    if not request.POST['item-id'] in request.session['cart']: 
     request.session['cart'].append(request.POST['item-id']) 

    return HttpResponse('true') 

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

def cart(request): 
    cart_items = request.session['cart'] 
    print len(cart_items) 
    return render(request, 'checkout/cart.html', ({ 'items': cart_items })) 

в шаблоне я просто хочу, чтобы напечатать список, как это:

{% load cart_helpers %} 

{% block content %} 
<div class="cart"> 
    <div class="inner"> 
    <h2>Warenkorb</h2> 
    <table class="listing"> 
     {{ items }} 
    </table> 
    </div> 
</div> 
{% endblock %} 

независимо от того, что я делаю, список в моей телеге сессии имеет только один пункт. ..

любой совет? заранее спасибо!

ответ

2

На ваш взгляд, вам необходимо установить request.session.modified = True, чтобы указать, что вы изменили объект сеанса. Так обновить ваш взгляд

def add_to_cart(request): 
    if request.method == 'POST': 
    if 'cart' not in request.session: 
     request.session['cart'] = [] 
    if not request.POST['item-id'] in request.session['cart']: 
     request.session['cart'].append(request.POST['item-id']) 

     request.session.modified = True #set modified state 

    return HttpResponse('true') 

Это необходимо потому, что

request.session['cart'].append(request.POST['item-id']) 

не изменяет request.session но изменяет request.session['cart'], в таких случаях Джанго не знают о модифицированной сессии и не спасают его.

Refer When sessions are saved

+0

oh да !!! Большое спасибо... – Tronic

Смежные вопросы