Обработчик контекста аутентификации Django: не запрашивать пользователя для каждого запроса - PullRequest
0 голосов
/ 25 сентября 2011

Я включил промежуточное ПО для аутентификации django, так что теперь у меня есть пользовательская переменная в контексте моего запроса. В этом случае для каждого запроса страницы пользовательский объект запрашивается из базы данных. Можно ли настроить это промежуточное ПО на использование кэшированного пользовательского объекта (например, который я поместил в сеанс)? Пользовательские объекты не обновляются часто, поэтому мне не нужно иметь дополнительный запрос БД для каждой страницы. Спасибо.

Ответы [ 2 ]

1 голос
/ 25 сентября 2011

Да, вы можете сохранить пользователя в сеансе.

Единственное, на что вы обращаете внимание, - это то, что если вы вносите изменения в этот пользовательский объект, то пользователи, которые вошли в вашу систему во время установки обновления, могут не иметь этого изменения (то есть добавленного вами свойства).

Просто убедитесь, что ваше промежуточное ПО проверило объект или напишите какой-нибудь код, который может это сделать.Это может быть что-то, что вы можете оставить только для выпуска изменения пользователя, а затем вытащить после выпуска.(если вы используете пользователя django auth, вы вообще не будете его менять)

1 голос
/ 25 сентября 2011

Да, конечно, вы можете сделать это, и я думаю, что это также хорошая идея:)

Я сделал это с пользовательским аутентификационным бэкэндом, в котором метод get_user пытается извлечь пользователя из кэша (изатем из базы данных в случае отсутствия кэша).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...