Как создать класс сразу после запуска сервера Django и получить доступ к его членам позже в файле views.py
Я столкнулся с простой проблемой в Django, на этом форуме уже были подобные вопросы, но на них не было правильного ответа, поэтому я пишу их снова.
Моя проблема такая же, как и этот вопрос. Как инстанцировать класс сразу после запуска сервера Django и получить доступ к его членам позже в views.py
Мне нужно инстанцировать пользовательский класс при запуске сервера и интегрировать его в представление, обращаясь к методам инстанцированного пользовательского класса.
Допустим, мы создали этот класс, инстанцировали его при запуске сервера и сохранили в переменных, которые могут быть использованы в дальнейшем, например, в urls.py или где-то еще. (Я не знаю как)
class MyClass:
def __init__(self):
self.a=3
def foo(self):
return self.a
...
#When django server starts
new=MyClass()
В view.py, допустим, есть какая-то магия, которая передает инстанцированный экземпляр в качестве параметра в метод view.
def index(request, instantiatedClass :MyClass):
a=instantiatedClass.foo()
return HttpResponse(f"{a} is your var.")
Это то, что я хочу. но я исследовал и в urls.py нет опций, которые могут передать пользовательские параметры в метод pointed views.py, кроме передачи информации url пользователем.
Я считаю, что модель Django ведет себя и инстанцируется не так, как обычный класс.
Так как же я могу этого добиться?
Все, что вы объявили вне функций в views.py
, будет инициировано после запуска вашего сервера только один раз. В этом случае ваша переменная new
будет экземпляром MyClass
и будет храниться в оперативной памяти, как только вы перезапустите свой сервер, ее данные будут потеряны.
any_views.py
class MyClass:
def __init__(self):
self.a = 3
def foo(self):
return self.a
new = MyClass()
def index(request):
a = new.foo()
print(a)
return HttpResponse(f"{a} is your var.")