2017-01-14 2 views
0

Я пытаюсь следовать этому учебнику (https://hellowebapp.com/news/introduction-to-class-based-views/) и сделал этот вид:Джанго: объект «ContactView» не имеет атрибута «формы»

class ContactView(FormView): 
    form_class = ContactForm 
    success_url = reverse_lazy('index') 
    template_name = 'app/contact.html' 

    def form_valid(self, form): 
     contact_name = self.form.cleaned_data['contact_name'] 
     contact_email = self.form.cleaned_data['contact_email'] 
     form_content = self.form.cleaned_data['content'] 

     template = get_template('contact_template.txt') 
     context = Context({ 
      'contact_name': contact_name, 
      'contact_email': contact_email, 
      'form_content': form_content 
     }) 
     content = template.render(context) 

     email = EmailMessage(
      'New contact form submission', 
      content, 
      'Your website ' + '', 
      ['[email protected]'], 
      headers={'Reply-To': contact_email} 
     ) 
     email.send() 
     return super(ContactView, self).form_valid(form) 

Однако, когда я отправить форму, я получаю следующее сообщение об ошибке : 'ContactView' object has no attribute 'form'

ошибка, как представляется, связанные с этой части:

contact_name = self.form.cleaned_data['contact_name'] 
    contact_email = self.form.cleaned_data['contact_email'] 
    form_content = self.form.cleaned_data['content'] 

где 'форма' является нерешенной ссылкой.

Как исправить эту ошибку? Любая помощь высоко ценится! Я использую Python 3.5 и Django 1.9.

ответ

3

Это должно быть form вместо self.form (так как экземпляр формы передается как параметр функции).

def form_valid(self, form): 
    contact_name = form.cleaned_data['contact_name'] 
    contact_email = form.cleaned_data['contact_email'] 
    form_content = form.cleaned_data['content'] 
    ... 
Смежные вопросы