Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение объектов для сессии, Django sessions 
V
    Опции темы
fray
Дата 20.6.2009, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 7.6.2007

Репутация: нет
Всего: 0



Появился вопрос, как сохранять объекты для определленой сессии.

Код

f = ItemForm(request.POST) 
new_f = f.save(commit=False)

request.session['f_objects'].append(new_f)
request.session.save()



можно ли так сделать ? или нужно провидить сериализацию объекта new_f ?
Да тут еще и аутефикация пользователя имеется, при этом, и хотелось бы чтобы данные лежали в django_sessions а по сети гулял только хеш.

Или это как-то так должно выглядеть ?

Код

f = ItemForm(request.POST) 
new_f = f.save(commit=False)

if request.user.is_authenticated():
   s = SessionStore(session_key=request.session.???key())
   s['f_objects'].append(new_f)
   s.save()



Это сообщение отредактировал(а) fray - 20.6.2009, 12:45
PM MAIL   Вверх
Daevaorn
Дата 20.6.2009, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 3
Всего: 70



Цитата(fray @  20.6.2009,  13:25 Найти цитируемый пост)
можно ли так сделать ?

Да, можно. Только если вы уверены что в request.session['f_objects'] список.
Цитата(fray @  20.6.2009,  13:25 Найти цитируемый пост)
или нужно провидить сериализацию объекта new_f ?

Нет, это делается автоматически.
PM MAIL WWW   Вверх
fray
Дата 22.6.2009, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 7.6.2007

Репутация: нет
Всего: 0



Цитата(Daevaorn @  20.6.2009,  20:59 Найти цитируемый пост)
Да, можно. Только если вы уверены что в request.session['f_objects'] список.

Делаю вот так
Код


    form_list = []    
    test_form = TestForm()

    form_list = request.session['form_list']
    form_list.append(test_form)
    request.session['form_list'] = form_list


где TestForm
Код

from django import forms

class TestForm(forms.Form):
    host = forms.CharField(max_length=100)
    port = forms.CharField(max_length=5)



и получаю ошибку

Traceback (most recent call last):
 File "C:\Python25\lib\site-packages\django\contrib\sessions\backends\base.py", line 88, in encode
    pickled = pickle.dumps(session_dict, pickle.HIGHEST_PROTOCOL)
PicklingError: Can't pickle <class 'django.utils.functional.__proxy__'>: attribute lookup django.utils.functional.__proxy__ failed

если в form_list числа или строки он нормально сохраняет в сессию, а когда сохраняю объект TestForm() то получаю это ошибку.


Это сообщение отредактировал(а) fray - 22.6.2009, 09:52
PM MAIL   Вверх
Daevaorn
Дата 23.6.2009, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 3
Всего: 70



В первом примеры вы пытались объект модели в сессию положить, а тут уже объект формы. Вы уверены что вы точно хотите форму в сессии класть?

На самом деле в форме скорей всего есть что-то обернутое в lazy объект, поэтому и не хочет пиклиться. Тут надо более предметно смотреть.


PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема »


 




[ Время генерации скрипта: 0.0431 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.