Python 如何使用django显示无效电子邮件地址的错误消息
当用户输入时,我无法显示错误消息 无效的电子邮件地址 这是我的forms.py文件:Python 如何使用django显示无效电子邮件地址的错误消息,python,django,forms,email,emailfield,Python,Django,Forms,Email,Emailfield,当用户输入时,我无法显示错误消息 无效的电子邮件地址 这是我的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',
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})
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)
这是我的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)
这是my views.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})
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显示良好,没有问题,我希望,如果用户输入无效的电子邮件地址,在电子邮件字段下显示错误消息,就像名称字段或消息字段留空一样,它正在显示请填写此字段
谢谢您的帮助。当名称或消息字段为空时,您的表单不会显示错误,原因与它不会显示无效电子邮件错误相同:因为您没有在模板中放入任何内容来显示这些错误。您需要添加{form.email.errors}}等来完成此操作。当名称或消息字段为空时,您的表单不会显示错误,原因与它没有显示无效的电子邮件错误相同:因为您没有在模板中放入任何内容来显示这些错误。您需要添加{form.email.errors}}等以实现此目的。若要显示邮件字段的错误消息,表单的电子邮件字段应为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})
要显示邮件字段的错误消息,表单的电子邮件字段应为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})
你的答案也有用,但不是我想要的,谢谢你的答案也有用,但不是我想要的,谢谢