如何指定FormView模板中使用的表单变量的名称?(表单的object_context_name)

Ben*_*ey4 8 django django-class-based-views

from forms import MyContactForm
from django.views.generic.edit import FormView 

class MyFormView(FormView):
    template_name = 'my_forms.html'                                      
    form_class = MyContactForm  
    success_url = '/thanks/' 
Run Code Online (Sandbox Code Playgroud)

在我的模板中,表单的调用方式如下:

{{ form }}

但我怎么能这样称呼它:

{{ my_contact_form }}

这将是object_context_name(对于模型)等效的形式.

Pav*_*sov 8

你可以覆盖get_context_data:

class MyFormView(FormView):
    template_name = 'my_forms.html'                                      
    form_class = MyContactForm  
    success_url = '/thanks/' 

    # from ContextMixin via FormMixin    
    def get_context_data(self, **kwargs):
        data = super(MyFormView, self).get_context_data(**kwargs)

        data['my_contact_form'] = data.get('form')

        return data
Run Code Online (Sandbox Code Playgroud)