Django - 如何进行视图所需的大型初始化(APIView)

时间:2018-03-01 11:28:35

标签: django django-rest-framework django-views

我有一个简单的APIView:

class MyView(APIView):
    symspell = Symspell()

    def post(self, request):
        res = self.symspell.do_something()
        return res

这是我的问题:我的班级Symspell的构造函数需要30秒才能运行。因此,当我真正运行或对我的应用程序执行任何操作(例如./manage.py migrate)时,它会向运行时添加30秒。 所以我的问题是:

  • 有更好的方法吗? (在视图中使用带有长构造函数的类)
  • 我只能在我只运行服务器而不进行迁移等其他操作时构建此视图吗?
  • 我可以在多个视图中使用同一个类吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  

有更好的方法吗? (在视图中使用带有长构造函数的类)

我不这么认为,虽然我从来没有见过这么沉重的构造函数,所以不要认为我是这方面的权威。

  

我只能在我只运行服务器而不进行迁移等其他操作时构建此视图吗?

如果您在initial()的{​​{1}}函数中运行构造函数,则可以这样做。

  

我可以在多个视图中使用相同的类吗?

我认为你的意思是在几个视图中使用相同的对象?如果是这样,您可以将该类实现为单例,以避免每次都重新运行构造函数。