Я пытаюсь стилизовать ошибки, используя загрузчик Twitter в моем проекте Django. Прямо сейчас у меня есть простая форма, которая запрашивает адрес электронной почты человека, заставляет его нажать кнопку, а затем отправляет его в базу данных. Он также имеет проверку проверки, чтобы увидеть, является ли электронное письмо уникальным в базе данных. Если он не уникален, возникает ошибка «Это письмо уже зарегистрировано». Тем не менее, когда возникает ошибка, для дублированного электронного письма рядом с полем ввода с текстом This email is already registered
выводится ужасный список маркеров. Я пытаюсь оформить его так, чтобы в нем отображалось небольшое диалоговое окно под текстом ввода с желтым значком i
, как это происходит, когда на входе нет знака @
, то есть это не электронная почта. Некрасивая точка также появляется, когда действительный домен не включен в электронное письмо, например, .com
не добавлено.
Я думаю, что проблема заключается в том, как настроен мой html формы или как представление обрабатывает ошибки формы. Возможно, поскольку поле формы имеет вид EmailField, индикатор is_valid
не проверяется и, следовательно, отображает предупреждение о загрузке в Twitter.
Как мне заставить его показывать предупреждение каждый раз? Ниже мой код:
является частью index.html
<form class="form-inline" method="post">
<div class="input-group input-group-newsletter">
<div class="form-group">
{% csrf_token %}
{{ form }}
</div>
<div class="form-group">
<div class="input-group-append">
<button class="btn btn-secondary" type="submit">Button Text</button>
</div>
</div>
</div>
</form>
views.py
from django.shortcuts import render, HttpResponse
from django.views.generic import TemplateView
from appname.forms import AppForm
class AppView(TemplateView):
template_name = 'apps/index.html'
def get(self, request):
form = AppForm()
return render(request, self.template_name, {'form': form})
def post(self, request):
form = AppForm(request.POST)
if form.is_valid():
email = form.cleaned_data['email']
form.save()
form = AppForm()
args = {'form': form, 'email': email, 'signedup': True}
else:
args = {'form': form, 'signedup': False}
return render(request, self.template_name, args)
forms.py
from django import forms
from .models import AppModel
class AppForm(forms.ModelForm):
email = forms.EmailField(required=True,
label='',
widget=forms.EmailInput(attrs={'class': 'form-control',
'placeholder': 'Enter email...',
'name': 'email',
'aria-label': 'Enter email...',
'aria-describedby': 'basic-addon'}))
class Meta:
model = AppModel
fields = ('email',)
def clean_email(self, *args, **kwargs):
email = self.cleaned_data.get("email")
if AppModel.objects.filter(email__iexact=email).exists():
raise forms.ValidationError("This email is already registered.")
return email