如何以干净的方式传递变量以在Django CBV内部使用

时间:2018-08-01 08:33:43

标签: django-views

我想知道一种在基于Django类的视图中内部定义和使用变量的干净方法。该变量并非旨在用于模板中,而是用于视图的内部功能。

直到现在,我使用get_form_kwargs()方法在表单中传递变量(my_variable),然后从表单中获取此变量,但我认为还有一种更简洁的方法要做到这一点 !我可以对get_context_data()做同样的事情,但是我的目标不是用模板中未使用的变量重载上下文。

示例:

我的观点

class MyView(generic.FormView):
    template_name = 'mytemplate.html'
    form_class = MyForm

    def get_form_kwargs(self):
        kwargs = super(MyView, self).get_form_kwargs()
        kwargs['my_variable'] = 'foo'
        return kwargs

    def form_valid(self, form):
          my_variable = form.my_variable
          # my code here, using my_variable
          # [...]

和我的表格:

class MyForm(forms.Form):
        def __init__(self, *args, **kwargs):
        self.my_variable = kwargs.pop('my_variable', None)
          super(MyForm, self).__init__(*args, **kwargs)

在我的示例中,我需要用于表单的变量,但并非总是出于表单目的。我希望能够在所有视图中使用变量,例如self.my_variable。

谢谢!

0 个答案:

没有答案