2009-06-03 2 views
0

Вот моя проблема. DJango продолжает хранить все глобальные объекты после первого запуска скрипта. Например, объект, который вы создаете в views.py во всем мире, будет присутствовать до перезапуска сервера приложений. Это прекрасно, если ваш объект не привязан к какому-либо внешнему ресурсу, который может время ожидания. Теперь, как я собирался исправить, был какой-то заводский метод, который проверяет, создан ли объект, и создает его, если это не так, а затем возвращает его. Однако это не удается, потому что объект существует там с момента последнего запроса страницы, поэтому фабричный метод всегда возвращает объект, который был создан во время первого запроса.Как перезагрузить глобальные вары на каждом обновлении страницы в DJango

Я ищу, чтобы вызвать что-то, что может случиться на основе запроса. Я видел способы сделать это, внедряя свое собственное промежуточное ПО, но я думаю, что это слишком много. Кто-нибудь знает некоторые зарезервированные методы или какой-либо другой запрос.

ответ

6

Прост: не используйте глобальные объекты. Если вы хотите объект внутри представления, создайте его внутри представления, а не как глобальный. Таким образом, он будет собран после завершения представления.

+2

Кроме того, вы можете использовать сеанс для объектов, которые являются «глобальными» (фактически постоянными), пока пользователь не выйдет из системы. –

+0

Хорошее применение для глобальных модулей, но вы должны быть уверены, что они неизменяемы и действительны до тех пор, пока сервер не будет работать. –

+1

Если они были неизменными и действительны до тех пор, пока сервер не работает, что помешает вам установить его в settings.py –

Смежные вопросы