Сессия Django персистентные но проигрывающие данные

Я работал в течение многих часов, пытаясь понять следующую проблему: Я сделал, чтобы пользователь отправил запрос Ajax для динамичной отправки формы и записи, которую увеличило количество форм для чтения на представлении. К этому концу я использую request.session['editing_foo'] = { 'prefix_of_form_elements' : pkey } так, чтобы я мог связать их с базой данных для сохранения, и загрузка (-1 для новых форм, которые еще не были сохранены).

Однако, когда я использую следующий код (см. нижнюю часть), я получаю следующий причудливый вывод:

1-й Щелчок:

{} foousername
next_key 1
1
{u'1-foo': -1}

2-й Щелчок:

{} foousername
next_key 1
1
{u'1-foo': -1}

3-й Запрос:

{} foousername
next_key 1
1
{u'1-foo': -1}

Какого черта продолжается?

id_fetcher = re.compile(r'\d')


@login_required
def ajax_add_foo(request):
    def id_from_prefix(key):
        return int( id_fetcher.search(key).group(0) )

    if 'editing_foos' not in request.session:
        print "reinitializing"
        request.session['editing_foos'] = {}

    print request.session['editing_foos'], request.user
    keys = request.session['editing_foos'].keys()
    if len(keys) == 0:
        next_key = 1
    else:
        print [ id_from_prefix(key) for key in keys ]
        next_key = max([ id_from_prefix(key) for key in keys ]) + 1
    print "next_key", next_key

    fooform = FooForm(prefix=next_key)
    print next_key

    request.session['editing_foos'].update( {create_prefix(FooForm, next_key) : -1 } ) # This quote is new and has no pkey
    print request.session['editing_foos']

    return render_to_response( 'bar/foo_fragment.html',
                                {'fooform' : fooform, },
                                context_instance=RequestContext(request))

Всем большое спасибо!

Примечание: Это - продолжение предыдущего вопроса относительно того же исходного кода.

5
задан Community 23 May 2017 в 10:31
поделиться

1 ответ

Я не думаю, что полностью понимаю вопрос, но вы можете посмотреть, какой механизм сеанса вы используете

, если вы используя механизм сеанса кеширования, вам необходимо убедиться, что у вас правильно настроено кеширование (например, фиктивный кеш просто выбрасывает данные вашего сеанса)

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

request.session.modified = True
12
ответ дан 13 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: