У меня есть вид в Django, который вызывает внешнюю библиотеку/класс. Проблема заключается в том, что по какой-то причине Django сохраняет результаты кэширования, исходящие из предыдущих вызовов этого класса.Django странное поведение
Пожалуйста, рассмотрим следующий простой пример:
Джанго вид:
from some_path import Demo
def test_view(request):
demo = Demo()
result = demo.do_something()
return render(request, 'test.html',
{ 'result':result }
)
Демо-класс:
class Demo():
result = []
def do_something(self):
self.result.append(1)
self.result.append(2)
self.result.append(3)
return self.result
Вы ожидаете результат будет [1, 2, 3], не так ли? НЕПРАВИЛЬНО!
При первой загрузке страницы вы получите правильный результат. Но по всем следующим запросам он будет продолжать увеличиваться: [1, 2, 3, 1, 2, 3] ... [1, 2, 3, 1, 2, 3, 1, 2, 3] ...
Итак, мой вопрос очевиден - что здесь происходит? Как я получаю [1, 2, 3] каждый раз, когда я вызываю класс внутри представления Django?
Джанго 1.7/MacOS X.
Мой вопрос описан в полном объеме в следующем учебном пособии: https://docs.python.org/3/tutorial/classes. html # переменные класса и экземпляра – Termos