Почему мое печенье не устанавливается? - PullRequest
2 голосов
/ 16 сентября 2010

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

COMPANY_COOKIE = 'last_login_company_id'

def login(request, *args, **kwargs):
    initial_company_id = request.COOKIES[COMPANY_COOKIE] if COMPANY_COOKIE in request.COOKIES else None
    def makeCompanyAuthenticationForm(*args, **kwargs):
        kwargs.setdefault('initial', {})
        initial = kwargs['initial']
        initial['company'] = initial_company_id
        return CompanyAuthenticationForm(*args, **kwargs)

    kwargs['authentication_form'] = makeCompanyAuthenticationForm
    response = django_login(request, *args, **kwargs)

    if request.method == 'POST' and request.user.is_authenticated():
        request.session['user_menu'] = get_user_menu()
        if 'company' in request.POST:
            log.debug("Storing user company %s in cookie %s", request.POST['company'], COMPANY_COOKIE)
            response.set_cookie(COMPANY_COOKIE, request.POST['company'])
        request.session.save()
    return response

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

Я использую панель инструментов отладки Django с INTERCEPT_REDIRECTS, установленным на True, и я вижу, что вызывается мой оператор журнала. Если я вставлю pdb.set_trace () после set_cookie, я увижу, что response.cookies содержит cookie-файл моей компании. Однако в моем браузере его нет. В DjDT я вижу, что переменная COOKIES моего запроса не содержит мой cookie, и в инспекторе хранилища Chrome я вижу то же самое; last_login_company_id cookie нигде нет.

Почему бы это не установить?

1 Ответ

1 голос
/ 16 сентября 2010

Простой ответ; в панели инструментов django-debug-tool есть ошибка:

http://github.com/robhudson/django-debug-toolbar/issues/#issue/6

Когда intercept_redirects отключен, все это работает.

...