2013-03-25 3 views
5
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/' 

In meiner Vorlage, die Form wie folgt aufgerufen wird:Wie gibt man den Namen der Formularvariablen an, die in der Vorlage eines FormView verwendet wird? (Object_context_name für Formulare)

{{ form }}

Aber wie kann ich es so nennen:

{{ my_contact_form }}?

Dies wäre das Formäquivalent von object_context_name (für Modelle).

+0

http://stackoverflow.com/questions/6907388/updating-context-data-in-formview-form-valid-method – catherine

Antwort

8

könnten Sie get_context_data außer Kraft setzen:

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 
+0

Haben Sie eine Ahnung, was zu tun, wenn Sie mehrere Formulare verwenden möchten? Ich überlegte, ob ich sie an einen Datenschlüssel übergeben und nur 'form_class' fallen lassen sollte. Aber ich bekomme einen 'TypeError, NoneType ist nicht aufrufbar' wenn ich das tue. – Bentley4

+1

Sie können nur ein Formular einreichen. 'generic.edit.FormView' verwaltet ein Formular. Sehen Sie sich die [Quelle von FormMixin und ProcessFormView] an (https://github.com/django/django/blob/master/django/views/generic/edit.py): Sie müssen 'get' und' form_invalid überschreiben 'Um alle Formulare zu rendern, müssen Sie' post' überschreiben, um zu bestimmen, welche Form gesendet und verarbeitet wurde. An dieser Stelle glaube ich nicht, dass Sie von FormView erben sollten. –

+1

Prüfen Sie http://stackoverflow.com/questions/6276398/multiple-form-classes-in-django-generic-class-views, insbesondere die zweite Aktualisierung der akzeptierten Antwort. –

Verwandte Themen