问题描述
我正在尝试对 django 表单进行服务器端验证,这是一个包含用户信息的简单表单,验证是对 views.py 中的电子邮件字段进行的。正如标题所说,我想呈现相同的旧表单,但使用电子邮件输入类 =“.... is-invalid”,以防数据库中存在具有相同电子邮件的条目。
表单应该是这样的:Server side
下面是views.py:
def client_create_view(request):
form = ClientForm(request.POST or None)
if form.is_valid():
obj = form.save(commit=False)
mail = form.cleaned_data['Mail']
user = Client.objects.get(Mail=mail)
if user != None:
print("user exists @: " + user.Mail)
form.invalid()
context = {
'validation': False,'form':form
}
return render(request,"clients/test.html",context)
forms.py:
class ClientForm(forms.ModelForm):
FName = forms.CharField(label='First Name',widget=forms.TextInput(attrs={"placeholder":"Your First Name","class":"form-control","id":"validationCustom01"}),required=True)
LName = forms.CharField(label='Last Name',widget=forms.TextInput(attrs={"placeholder":"Your Last Name"}),required=True)
Phone = forms.CharField(label='Phone Number',widget=forms.TextInput(attrs={"placeholder":"Your Phone Number"}),required=True)
Mail = forms.EmailField(label='Email',widget=forms.TextInput(attrs={"placeholder":"Your Email"}),required=True)
Address = forms.CharField(label='Address',widget=forms.TextInput(attrs={"placeholder":"Your Address"}),required=True)
Password = forms.CharField(label='Password',widget=forms.TextInput(attrs={"placeholder":"Password","type":"password"}),required=True)
class Meta:
model = Client
fields = [
'FName','LName','Phone','Mail','Address','Password'
]
test.html:
{% load crispy_forms_tags %}
{% block content %}
<form id="example-form" method="post" class="d-flex justify-content-center align-items-center row g-3 needs-validation" novalidate>
{% csrf_token %}
{% comment %} {{ form|crispy }} {% endcomment %}
<div class="col-md-3">
{{ form.FName|as_crispy_field }}
{{ form.Mail|as_crispy_field }}
<div class="valid-Feedback">
Looks good!
</div>
{% comment %} {{ form.Mail|as_crispy_field }} {% endcomment %}
</div>
<div class="d-flex justify-content-center align-items-center col-12">
<button type="submit" class="btn btn-success">Enregistrer</button>
</div>
</form>
{% include 'footer.html' %}
{% endblock %}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)