Хороший Вопрос!
Один подход, который я скорее люблю, должен создать итератор/объект генератора, который испускает объекты-экземпляры, которые относятся к определенному контексту. Обычно этот объект переносит некоторый базовый материал доступа к базе данных, но я не должен знать это при использовании его.
, Например,
объект AnswerIterator генерирует AnswerIterator. Объекты ответа. Под капотом это выполняет итерации по SQL-оператору для выборки всех ответов и другого SQL-оператора для выборки всех связанных комментариев. Но при использовании итератора я просто использую объект Ответа, который имеет минимальные свойства для этого контекста. С определенным скелетным кодом это становится почти тривиальным, чтобы сделать.
я нашел, что это работает хорошо, когда у меня есть огромный набор данных, чтобы продолжить работать, и когда сделан правильно, он дает мне небольшие, временные объекты, которые относительно легко протестировать.
Это - в основном тонкая фанера по материалу Доступа к базе данных, но это все еще дает мне гибкость абстракции его, когда я должен.
Как сказал jobscry, logout () очищает данные сеанса, но похоже, что вы также установили свои собственные файлы cookie.
Вы можете обернуть представление auth logout, которое вернет HttpResponse:
def logout_user(request):
response = logout(request, next_page=reverse('app.home.views.home'))
response.delete_cookie('user_location')
return response
Или, если вы просто используете метод выхода из системы, а не представление, вы можете использовать возвращаемое значение для имеющегося у вас метода redirect () [который, как я полагаю, также возвращает HttpResponse].
def logout_user(request):
logout(request)
response = redirect('app.home.views.home')
response.delete_cookie('user_location')
return response
согласно http://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.logout
Изменено в Django 1.0: Вызов logout () теперь очищает данные сеанса.