Похоже, ваш браузер не принимает сессионные куки, которые отправляет Django.
Ваш браузер должен иметь возможность сообщать вам, какие куки устанавливаются с помощью отклика страницы из вашего приложения.Убедитесь, что cookie-файл «sessionid» на самом деле отправляется и что домен и путь указаны правильно.
Если в вашем файле settings.py неправильно установлены SESSION_COOKIE_DOMAIN
или SESSION_COOKIE_PATH
, они могутбыть причиной того, что Django устанавливает в браузере файлы cookie, которые не возвращаются на сервер.
Если вы хотите проверить все настройки, начните с чтения: http://docs.djangoproject.com/en/1.2/topics/http/sessions/
В двух словахвам необходимо:
- иметь
'django.contrib.sessions'
в вашем INSTALLED_APPS
; - иметь
'django.contrib.sessions.middleware.SessionMiddleware'
в MIDDLEWARE_CLASSES
;и - на производственном сервере, вам может потребоваться установить
SESSION_COOKIE_DOMAIN
и SESSION_COOKIE_PATH
для хорошего взаимодействия с другими веб-приложениями в том же домене или связанных доменах.
Редактировать:
Посмотрев на ваши вставленные настройки, я вижу, что происходит две разные вещи, каждой из которых достаточно, чтобы остановить сессионные куки.
SESSION_COOKIE_DOMAIN
установлен на «mydomain.com»
Для файла cookie для общего TLD требуется , чтобы часть «домен» содержала как минимум два периода (».разделители в нем.Это мешает людям устанавливать куки для доменов, таких как ".com".(Я полагаю, что для файлов cookie для доменов, находящихся под юрисдикцией страны, требуется три периода.)
Измените это на ".mydomain.com", и браузер должен его вернуть.
В разработке (запущенной на вашем локальном компьютере, на 127.0.0.1), оставьте этот параметр пустым, иначе ваш браузер вообще не примет cookie.
SESSION_COOKIE_PATH
установлен в "/ tmp"
Это выглядит как ошибка, если ваше веб-приложение не размещено по адресу "http://mydomain.com/tmp/"
SESSION_COOKIE_PATH
используется для указания компонента" путь "cookie, то есть префикс URL-адреса, под которым cookie-файл будет возвращен на сервер. Это позволяет разместить одно приложение на «mydomain.com/firstapp/», а другое - на «mydomain.com/secondapp/», и вы можетеубедитесь, что файлы cookie "sessionid" не будут перепутаны между ними.
Если у вас есть только одно приложение, размещенное под этим доменным именем, оставьте это поле пустым, и по умолчанию оно будет иметь значение "/" (весь домен)
Чтобы контролировать, где Django хранит sesЕсли вы храните данные в вашей файловой системе (как вы, похоже, пытаетесь это сделать), вы можете использовать настройку SESSION_FILE_PATH
.По умолчанию он все равно установлен на «/ tmp /», поэтому вам вообще не нужно его устанавливать.