Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 19, 2009 22:17:41

RedLobster
От:
Зарегистрирован: 2009-12-19
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Некорректная работа сессии

Доброго времени суток. С джанго работаю пока только месяц. Испытываю абсолютный восторг, откровенно говоря. Но тут довелось с сессиями столкнуться и их поведение оказалось достаточно неожиданным для меня. Есть попытка сделать интернет магазин, доступен он на текущий момент по адресу 90.157.115.19:86, хостится на моей домашней машинке, Ubuntu 9.10, Apache/2.2.12, mod_python 3.3.1, python 2.6, django 1.1. При добавлении товара в корзину информация о товаре заносится в сессию. При оформлении заказа или очистке корзины эта информация должна удаляться. На деле сталкиваюсь с тем, что после очистки корзины, понажимав различные ссылки, через некоторое время в корзине опять появляется один товар. Куки не изменяется. Откуда там появляется товар мне не ясно. В моих глазах выглядит как абсолютное волшебство. Далее функции записи и очистки корзины:

def set_basket(request,new_basket=[]):
if request.session.has_key('order_items'):
del request.session[u'order_items']
request.session[u'order_items'] = new_basket
request.session.save()
return request.session[u'order_items']

def get_basket(request):
if (not request.session.has_key(u'order_items')) or (not len(request.session[u'order_items'])):
set_basket(request)
return request.session[u'order_items']

def clear_basket(request):
if request.session.has_key('order_items'):
del request.session[u'order_items']
return HttpResponseRedirect('/orders/list/')

def add_to_basket(request,Item):
basket = get_basket(request)
if isinstance(Item, OrderItem):
for (i,oItem) in enumerate(basket):
if oItem.good.id != Item.good.id: continue
if oItem.size.id != Item.size.id: continue
if oItem.color.id != Item.color.id: continue
basket.quantity+=int(Item.quantity)
break
else:
basket+=[Item]
set_basket(request,basket)
return basket
в settings.py

SESSION_SAVE_EVERY_REQUEST = True
SESSION_ENGINE = ‘django.contrib.sessions.backends.db’

С чем это может быть связано? Может криво пишу что-то? Подскажите плиз, если есть какие идеи. Наверное делаю что-то не правильно, но что найти не могу..



Офлайн

#2 Дек. 19, 2009 22:48:48

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Некорректная работа сессии

Джанговские сессии в куке держат только хеш сессии, и больше ничего (если вручную туда ничего не пихать).

Может ошибка в названии ключа? Почему в одно месте - это просто стринг, а вдругом - юникодный?
А вообще описание проблемы смутное. Попробуйте проследить все вызовы для воспроизведения проблемы.

Офлайн

#3 Дек. 19, 2009 23:20:56

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Некорректная работа сессии

RedLobster
Вы уже постите эту тему во второй форум, и всё равно не можете выделить код по человечески. Вам нужна помощь в освоении bbcode?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version