【发布时间】:2019-08-15 06:33:45
【问题描述】:
如果用户输入已在数据库中提交的电子邮件输入,我正在尝试引发错误并将其显示在浏览器上。由于某些原因,数据库中没有保存任何内容而不是引发错误,而是将用户重定向到我设置为重定向到的页面。
如果数据库中存在电子邮件,我希望能够停止用户并引发错误。
型号:
class Foo(models.Model):
full_name = models.CharField(max_length=50)
email = models.EmailField(max_length=50, blank=False)
phone_number = models.CharField(max_length=10, blank=False)
表格。
from django import forms
from .models import Foo
class FooModelForm(ModelForm):
class Meta:
model = Foo
fields = ['full_name',
'email',
'phone_number']
help_texts = {'full_name': ('Required'),
'email': ('Required'),
'phone_number': ('Required')}
def clean_email(self):
'''
Check if exists in database.
'''
email = self.cleaned_data.get('email')
try:
match = Foo.objects.get(email=email)
except Foo.DoesNotExist:
return email
# raise forms.ValidationError('This email is already in use.')
from django.shortcuts import render, redirect
from snippets.models import Foo
from snippets.forms import FooModelForm
def index(request):
if request.method == 'POST':
form = FooModelForm(request.POST)
if form.is_valid():
form.save()
return redirect('snippets:form-sent')
else:
form = FooModelForm()
context = {'form':form}
return render(request, 'snippets/index.html', context)
HTML
<form method="post" id="form">
{% csrf_token %}
{{ form|crispy }}
<div class="text-center">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
我在这里完全迷失了,尽管它可能很简单。
任何帮助将不胜感激。
【问题讨论】:
标签: django forms django-forms modelform validationerror