2016-05-01 11 views
1

RegexValidatorがメッセージを表示しないのはなぜですか?私はあまりにも多くのコードを投稿してるように見えます...。ここ は私のviews.pyである:(RegexValidatorは私にトラブルを引き起こしているところ!)ここDjango RegexValidatorはメッセージを表示しません

from polls.forms import ContactForm 
from django.template.loader import get_template 
from django.core.mail import EmailMessage 
from django.template import Context, Template, RequestContext 
from django.shortcuts import render 
from django.shortcuts import redirect 
from django.core.mail import send_mail, BadHeaderError 
from django.http import HttpResponse, HttpResponseRedirect 
from django.template.loader import render_to_string, get_template 

def index(request): 
    return HttpResponse("Hello, world. You're at the poll index.") 

def contact(request): 
    form_class = ContactForm 

    # new logic! 
    if request.method == 'POST': 
     form = form_class(data=request.POST) 

     if form.is_valid(): 
      contact_name = request.POST.get('contact_name', '') 
      contact_email = request.POST.get('contact_email', '') 
      phone_number = request.POST.get('phone_number', '') 
      content = request.POST.get('content', '') 

      # Email the profile with the 
      # contact information 

      message = render_to_string('contact_template.txt', {'contact_name': contact_name, 'contact_email': contact_email, 'phone_number': phone_number, 'form_content': content}, context_instance=RequestContext(request)) 


      email = EmailMessage("New contact form submission", message, "[email protected]" +'', ['[email protected]'], headers = {'Reply-To': contact_email }) 
      email.send() 

      return redirect('contact') 

    return render(request, 'contact.html', {'form': form_class,}) 

は私forms.pyです:

from django import forms 
    from django.core.validators import RegexValidator 
    from django.core import validators 
    from django.core.exceptions import ValidationError 

    #new form 
    class ContactForm(forms.Form): 
     contact_name = forms.CharField(required=True) 
     contact_email = forms.EmailField(required=True) 
     phone_number = forms.CharField(required=True, max_length=9, validators=[RegexValidator(regex=r'^\d+$', message='Nieprawidłowy numer telefonu.', code='invalid_number', inverse_match=None, flags=0 
    )]) 
     content = forms.CharField(required=True, widget=forms.Textarea) 
     def __init__(self, *args, **kwargs): 
      super(ContactForm, self).__init__(*args, **kwargs) 
      self.fields['contact_name'].label = "Imię:" 
      self.fields['contact_email'].label = "E-mail:" 
      self.fields['phone_number'].label = "Numer telefonu:" 
      self.fields['content'].label = "Wiadomość:" 

と私のtemplate.py:

{% block content %} 
<h1>Formularz kontaktowy</h1> 
<form role="form" action="" method="post"> 
    {% csrf_token %} 
    {{ form.as_p }} 
    <button type="submit">Wyślij</button> 
</form> 
{% endblock %} 
+0

*いずれかの検証エラーが表示されますか、それともこれだけではありませんか?フォームの残りの部分、ビュー、テンプレートなど、より多くのコードを表示する必要があります。 –

+0

@Daniel Roseman、電子メールは動作していますが、構築されています。すぐにコードを追加します。ありがとうございました:) –

答えて

2

あなたのポストの要求がPOSTで、フォームがVAでない場合は、テンプレートのコンテキストform_class代わりのformに渡しています蓋。問題を解決するには、この3行表示の最後の行を変更します。

else: 
     form = form_class() 

    return render(request, 'contact.html', {'form': form,}) 

それは何のポストデータが存在しない場合は、空のフォームを作成して、テンプレートにform代わりのform_classを渡します。

+0

あなたは素晴らしいです!!!ありがとうございました!!! –

関連する問題