2012-05-25 4 views
0

Я пытаюсь использовать сеанс для передачи некоторых данных с одной страницы на другую. Вот код, который я написал в ajax.py.Django, session attr

def save_cookie(request, query): 
    request.session['query'] = query 

Но когда я вызываю эту функцию dajaxice. Как мы все знаем, когда мы пытаемся использовать dajaxice в html-странице, ошибка msg всегда «sth идет не так». Я попытался отлаживать save_cookie, но у объекта mock request, который я создал, нет сеанса attr. Однако, если я выполняю request.session = "blah", это сработало. Если я напрямую использую save_cookie (запрос, запрос). Появится сообщение об ошибке, которое запрашивает объект не видит attr ...

Код прямо прямо. Я не видел в этом никакой ошибки. Кто-нибудь знает причину?

ответ

0

Никогда не dajaxice/dajax, так что я не могу помочь здесь. Всего несколько баллов:

  • Вы включили (и правильно настроили) поддержку сеанса? https://docs.djangoproject.com/en/1.3/topics/http/sessions/

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

    Защиту save_cookie (запрос, запрос): попробовать: request.session [ «запрос»] = запрос , кроме исключений, е: печати х повышения

Выхода оператора печати должна теперь появиться в оболочке вы запустил сервер Dev из (? При условии, что вы работаете с сервером Dev ... Вы работаете с сервером разработчика, не так ли)

  • еще с помощью сервера разработчика, вы можете использовать PDB, чтобы перейти к интерактивной отладке:

    def save_cookie (запрос, запрос): import pdb; pdb.set_trace() request.session [ «запрос»] = Query

затем пытаются получить доступ к URL в вашем браузере, переключиться обратно в оболочку и вы в PDB сессии, где вы можете проверить запрос и (если есть один) объект request.session и т. д.

NB: не делайте этого, если работаете за Apache или любым другим веб-сервером - только со встроенным dev-сервером.

  • «request.session =" л»будет создавать«сеанс»атрибут на«запрос»объект, если он не существует (и, возможно, заменить реальный«сеанс»объект, если он уже существует), поэтому это не действительный тест или что-то разумное делать

Мои 2 цента ...

-1

Отказ от ответственности: Я ничего не знаю о dajaxice.

Ниже будет работать на макете объекта запроса:

def save_cookie(request, query): 
    if not hasattr(request, 'session'): 
     request.session = dict() 
    request.session['query'] = query 
+0

Действительно - но это может скрыть причину, по которой ОП испытывает проблемы. –