Я не понимаю, почему моя форма не проверяется в django

#django #django-forms #django-views #django-templates

#django #django-forms #django-views #django-templates

Вопрос:

Я все еще новичок в django. Играю с приложением leadmanager, и я не знаю, почему моя форма не проверяется.

число просмотров

 def index(request):
    lead=LeadForm()
    if request.method == 'POST':
        lead=LeadForm(request.POST)
        if lead.is_valid():
            messages.success(request, f'Thank you for registering. Someone will be contacting you soon.')
            return redirect('index')
        else:
            lead=LeadForm()
            messages.error(request, f'Something went wrong. Please try again later.')
        
    return render(request, "frontend/index.html", {'lead':lead})
  

в index.html

 <form action="" method="POST" class="lead-form">
    {% csrf_token %}
    <fieldset class="lead-info">
        <div class="form-control">
            <label for="">Full Name</label>
            {{ lead.fullname }}
        </div>
        <div class="form-control">
            <label for="">Email</label>
            {{ lead.email }}
        </div>
        <div class="form-control">
            <label for="">Phone</label>
            {{ lead.phone }}
        </div>
        <div class="form-control">
            <label for="">City</label>
            {{ lead.city }}
        </div>
    </fieldset>
             <button type="submit" class="btn-pill">Submit</button>
</form>
  

в forms.py

 class LeadForm(forms.ModelForm):
    email = forms.EmailField()
    class Meta:
        model = Lead 
        fields = ['fullname', 'email', 'phone', 'city', 'contact_preference']
        widgets = {'contact_preference': forms.RadioSelect }
  

Приветствуется любая помощь. contact_preference выполняет рендеринг К вашему сведению, я просто сократил код, чтобы этот вопрос не был таким длинным.

Комментарии:

1. удалите lead=LeadForm() в else части и отобразите ее с {{ form }} помощью в шаблоне. Тогда она покажет ошибки. Если вы визуализируете ее вручную, вам нужно добавить для каждого поля {{ lead.fieldname.errors }} : simpleisbetterthancomplex.com/article/2017/08/19 /…

2. @WillemVanOnsem У меня есть это, чтобы перехватить оператор if / else {% if messages %} {% для сообщения в messages %} <div class=»alert alert-{{ message.tags }}»> <span>{{ message }}</span> </div> {% endfor %} {% endif %}

3. @WillemVanOnsem это переходит прямо к оператору else. Я сделал все, что вы предложили, и это все равно переходит к оператору else. Я пытаюсь привести. имя_поля.ошибки сейчас.

4. @GlennDelostrico в шаблоне, где ваше поле contact_preference?

5. @WillemVanOnsem так что это похоже на поздний час или раннее утро, как бы вы на это ни смотрели. Я буквально скопировал lead. fieldname.errors вместо lead.phone.erros, lead.email.errors, я забыл, что установил для своего телефона значение phonenumbefields, поэтому я добавил код страны. Спасибо, Уиллем. Я просто устал и отсталый, лол