一个类如果不是Django中的一个模型,会很好地工作吗



我目前正在开发一款应用程序,该应用程序需要使用django进行简单的otp身份验证

在应用程序accountsmodels.py中,我创建了一个类来存储otp,而不将其作为模型,如下所示,

class temp:
def __init__(self,otp):
self.otp = otp
print(self.otp)

views.py中,代码为,

g = globals()
... some code    
g["user"+ str(request.POST['username'])] = models.temp(the_otp)

这在localhost中完全可以工作,如果我将其部署到heroku,这会工作吗。如果没有,建议其他方法暂时存储otp而不制作模型。提前谢谢。

不,这不会正常工作。您可能会看到它在本地开发服务器中运行良好,但由于使用全局变量,这种方法面临一些问题:

  1. 假设由于某种原因,我们需要重新启动服务器。现在发生了什么?好吧,你的全局变量现在丢失了,你的用户可能会面临不便,因为他们现在需要重新生成OTP,并感到奇怪为什么他们的OTP由于某种原因无效
  2. 我们运行多个进程来高效地为用户请求提供服务,用户的请求可能会提供给任何正在运行的进程。这里发生了什么?我们的OTP是在一个进程上生成的,用户现在正试图将其提交给另一个进程,再次面临不便
  3. 可能会出现更多类似的问题

通常,全局变量不好在web服务器中更是如此。