2017-01-03 5 views
-1

メールを送信するためにdjangoに連絡フォームを作成していますが、フォームがウェブページに表示されていません。フォームオブジェクトがコンテキストに正しく渡されていない可能性があるため、問題がどこにあるのか分かりません。以下のコードは私がこれまで持っていたものです。フォームにフィールドが表示されず、理由がわかりません

from .forms import * 

マイビュー

def email(request): 
    form = ContactForm() 
    if request.method == 'POST': 
     form = ContactForm(request.POST) 
     if form.is_valid(): 
      subject = form.cleaned_data['subject'] 
      email = form.cleaned_data['email'] 
      first_name = form.cleaned_data['first_name'] 
      message = form.cleaned_data['message'] 
      try: 
       send_mail(first_name + ": " + subject, message, email, 
          ['[email protected]']) 
      except BadHeaderError: 
       return HttpResponse("Invalid Header.") 
      return redirect('thankyou') 
    return render(request, 'Index-App/contact.html', {'form': form}) 

マイフォームクラス

class ContactForm(forms.Form): 
    subject = forms.CharField(required=True) 
    from_email = forms.EmailField(required=True) 
    first_name = forms.CharField(max_length=200, required=True) 
    message = forms.CharField(widget=forms.Textarea) 

のURL

url(r'^contact/$', views.email, name='contact'), 

マイテンプレート

{% block contact %} 
    <form method="POST" action="{% url 'Index-App:contact' %}"> 
     {% csrf_token %} 
     {{ form }} 
    <input type="submit" class="btn-success" value="Send"/> 
    </form> 
    {% endblock %} 
+0

、第二の接触はこれが機能しなかったのContactForm() – melb27

答えて

4

方法がGETあるとき、あなたのフォームをインスタンス化されていませんので。また、あなたは次のことを試してみてくださいrequest

selfのparamを変更する必要があります:私はミスを犯した

​​
+0

されている必要があり、それがどんな意味を作っていませんなぜ。 – melb27

+0

@melb27では 'email(self)'の代わりに 'email(request)'を使います。どのエラーが正確になっていますか? – ettanany

+0

フォームフィールドは表示されません。電子メールなどを入力するフィールド。送信ボタンが表示されます。連絡先メールを送信するためのフォームを作成する別の方法がありますか?私は実際に数日前からこれに行ってきました。 – melb27

関連する問題