2016-03-12 64 views
1

當用戶輸入 無效的電子郵件地址時,顯示錯誤消息時出現問題。如何使用django顯示無效電子郵件地址的錯誤消息

這是我forms.py文件:

from django import forms 
from .models import Contact 
from django.db import models 


class ContactForm(forms.ModelForm): 
    class Meta: 
     model = Contact 
     fields = [ 
      'name', 
      'email', 
      'message', 
     ] 

    def __init__(self, *args, **kwargs): 
     super(ContactForm, self).__init__(*args, **kwargs) 
     self.fields['name'].widget = forms.TextInput(attrs={ 
      'placeholder': 'Name', 
      'required': True}) 

     self.fields['email'].widget = forms.TextInput(attrs={ 
      'placeholder': 'Email', 
      'required': True}) 

     self.fields['message'].widget = forms.Textarea(attrs={ 
      'placeholder': 'Message', 
      'rows': 6, 
      'required': True}) 

這是我的models.py文件

from django.db import models 
from django import forms 
from django.core.validators import EmailValidator 

# Create your models here. 
class Contact(models.Model): 
    name = models.CharField(max_length = 50) 
    email = models.EmailField(blank = False, max_length = 200) 
    message = models.TextField(blank = False) 

這是我的views.py文件:

from django.shortcuts import render, redirect, render_to_response 
from django.http import HttpResponseRedirect 

from .models import Contact 
from .forms import ContactForm 
from django.contrib import messages 

# Create your views here. 

def contact_create(request): 
    form = ContactForm(request.POST or None) 
    if form.is_valid(): 
     instance = form.save(commit = False) 
     instance.save() 
     form = ContactForm() 
     messages.success(request, 'Your message was sent successfully. We will contact you shortly.') 
     return HttpResponseRedirect('/home/#contact') 

    context = { 
     "form": form, 
    } 

    return render(request, 'index.html', context) 

最後我的表格在index.html文件中

{% include "messages_display.html" %} 
<form method="POST" action=""> 
    {% csrf_token %} 
    <div class="row half"> 

     <div class = "6u" > {{ form.name }} </div> 
     <div class = "6u" > {{ form.email }} </div> 

    </div> 
    <div class="row half"> 
     <div class="12u"> {{ form.message }} </div> 
    </div> 
    <div class="row"> 
     <div class="12u"> 
      <ul class="actions"> 
       <input type="submit" class="button" value="Send Message" /> 
      </ul> 
     </div> 
    </div> 
</form> 

因此,message.success顯示正常,沒有問題,如果用戶輸入了無效的電子郵件地址,請在電子郵件字段下顯示錯誤消息,就像留下名稱字段或消息字段時一樣空,它顯示「請填寫此字段」。

謝謝你的幫助。

回答

1

要顯示郵件領域的錯誤信息,你的表格的電子郵件字段應該是forms.EmailInput

所以,你forms.py文件應該是:

from django import forms 
from .models import Contact 
from django.db import models 


class ContactForm(forms.ModelForm): 
    class Meta: 
     model = Contact 
     fields = [ 
      'name', 
      'email', 
      'message', 
     ] 

    def __init__(self, *args, **kwargs): 
     super(ContactForm, self).__init__(*args, **kwargs) 
     self.fields['name'].widget = forms.TextInput(attrs={ 
      'placeholder': 'Name', 
      'required': True}) 

     self.fields['email'].widget = forms.EmailInput(attrs={ 
      'placeholder': 'Email', 
      'required': True}) 

     self.fields['message'].widget = forms.Textarea(attrs={ 
      'placeholder': 'Message', 
      'rows': 6, 
      'required': True}) 
+0

是的,謝謝,它工作 – P3P5

3

您的表格不會當名稱或消息字段爲空時顯示錯誤,原因與它不顯示無效的電子郵件錯誤相同:因爲您沒有在模板中放置任何內容來顯示這些錯誤。你需要添加{{ form.email.errors }}等,使它這樣做。

+0

你的回答也工作了,但那一點都不t我在找什麼,謝謝 – P3P5

相關問題