2013-03-25 19 views
5

FormView şablonunda kullanılan form değişkeninin adı nasıl belirlenir? Benim şablonunda

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/' 
, form şöyle denir (formlar için object_context_name):

{{ form }}

Ama nasıl böyle diyebilirsin:

{{ my_contact_form }}?

Bu, object_context_name (modeller için) formlarına eşdeğer olabilir.

+0

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

cevap

8

Sen get_context_data geçersiz olabilir:

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

Eğer bir fikrin ne var mi Birden çok form kullanmak istediğinizde ne yaparsınız? Her birini bir veri anahtarına aktarmayı ve sadece form_class'ı bırakmayı düşündüm. Fakat bunu yaptığımda 'TypeError, NoneType callable 'değil. – Bentley4

+1

Sadece bir form gönderebilirsiniz. 'generic.edit.FormView' bir formu yönetir. [FormMixin ve ProcessFormView kaynağının] bölümüne bakın (https://github.com/django/django/blob/master/django/views/generic/edit.py): 'get' ve 'form_invalid'i geçersiz kılmanız gerekir. “tüm formları oluşturmak için ve hangi formun gönderildiğini ve işlendiğini belirlemek için“ post ”seçeneğini geçersiz kılmanız gerekir. Bu noktada, FormView'den miras almanız gerektiğini düşünmüyorum. –

+1

http://stackoverflow.com/questions/6276398/multiple-form-classes-in-django-generic-class-views, özellikle de kabul edilen yanıtın ikinci güncellemesini kontrol edin. –