如果 class 不是 Django 中的模型,它能正常工作吗?
Will a class work good without being a model in Django?
我目前正在开发一个需要使用 django
进行简单 otp 身份验证的应用程序
在应用程序 models.py
中 accounts
我创建了一个 class 来存储 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。
提前致谢。
不,这不会正常工作。您可能会看到它在本地开发服务器上运行良好,但由于使用全局变量,这种方法面临几个问题:
- 假设我们出于某种原因需要重新启动服务器。现在发生了什么?那么你的全局变量现在丢失了,你的用户可能会面临不便,因为他们现在需要重新生成他们的 OTP,并且感到奇怪为什么他们的 OTP 出于某种原因无效......
- 我们 运行 多个进程可以有效地为我们的用户请求提供服务,来自用户的请求可能会被提供给 运行ning 进程中的任何一个。这里发生了什么?那么我们的 OTP 是在一个进程上生成的,用户现在正试图再次将其提交给另一个进程,这会带来不便。
- 可能会出现更多类似的问题。
一般来说,全局变量 不好 在网络服务器中更是如此。
我目前正在开发一个需要使用 django
在应用程序 models.py
中 accounts
我创建了一个 class 来存储 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。
提前致谢。
不,这不会正常工作。您可能会看到它在本地开发服务器上运行良好,但由于使用全局变量,这种方法面临几个问题:
- 假设我们出于某种原因需要重新启动服务器。现在发生了什么?那么你的全局变量现在丢失了,你的用户可能会面临不便,因为他们现在需要重新生成他们的 OTP,并且感到奇怪为什么他们的 OTP 出于某种原因无效......
- 我们 运行 多个进程可以有效地为我们的用户请求提供服务,来自用户的请求可能会被提供给 运行ning 进程中的任何一个。这里发生了什么?那么我们的 OTP 是在一个进程上生成的,用户现在正试图再次将其提交给另一个进程,这会带来不便。
- 可能会出现更多类似的问题。
一般来说,全局变量 不好 在网络服务器中更是如此。