如何以及在何处调用基于 Class 的视图 Django 中的方法

How and where to call a method in a Class based view Django

作为新闻年决议的一部分,我向自己保证我会学习编写 Class 基于视图,但事实证明,我需要一些帮助..

我想做的是调用一个生成随机数的方法,然后在页面加载之前发送一封电子邮件,我很乐意这样做(我可能会使用 celery 在后台发送邮件)。

我不明白的是如何以及在何处调用方法 random_code() 和 send_email()(见下文)?

我是否通过覆盖 setup()、dispatch() 或 get() 等来执行此操作?

有人可以给我一个基本的例子吗?

class 看起来像这样:

class VerifyCode(FormView):

    template_name = "account/verify.html"
    form_class = VerifyForm

    def random_code(self):
        #random_code generator
        return random_code

    def send_email(self):
        #code to send email

非常感谢。

这取决于你想调用哪个REST方法。如果你使用的是简单的 GET,那么在 get() 中这样调用它:

class VerifyCode(FormView):

    template_name = "account/verify.html"
    form_class = VerifyForm

    def random_code(self):
        #random_code generator
        return random_code

    def send_email(self):
        #code to send email

    def get(self, request, *args, **kwargs):
        ...
        self.random_code()
        self.send_email()
        return super().get(request, *args, **kwargs)

post() 中以类似的方式为 POST 方法。

另一件事是您可以直接使用 Django 发送电子邮件。我这样做,这很简单。 Check this DOCS。如果你有什么问题,你可以 post 另一个问题。