Отображение ошибки при наличии ошибок в полях

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


views.py :

'KnowledgeForm': form,
'errors': str(form.errors),

но тогда в Django-шаблоне я должен использовать if для каждого поля и я добавляю пользовательское имя для каждого поля, я не знаю, почему я не могу использовать Verbose_name...

Шаблон :

                    {% if errors %}
                    <div class="alert alert-danger">
                        <p>
                            {% if KnowledgeForm.errors.KnowledgeTitle %}
                            عنوان دانش: {{ KnowledgeForm.errors.KnowledgeTitle }}
                            {% endif %}
            
                            {% if KnowledgeForm.errors.KnowledgeTextSummary %}
                             Summary: {{ KnowledgeForm.errors.KnowledgeTextSummary }}
                            {% endif %}
            
                            {% if KnowledgeForm.errors.KnowledgeFromDate %}
                            from Date: {{ KnowledgeForm.errors.KnowledgeFromDate }}
                            {% endif %}
            
                            {% if KnowledgeForm.errors.KnowledgetoDate %}
                           To date : {{ KnowledgeForm.errors.KnowledgetoDate }}
                            {% endif %}
            
                            {% if KnowledgeForm.errors.KnowledgeProcess %}
                            Chart: {{ KnowledgeForm.errors.KnowledgeProcess }}
                            {% endif %}
            
                          {% endif %}

                        </p>
                    </div>
                    {% endif %}

Второй метод :

                    {% if KnowledgeForm.errors %}
                        <ul class="alert alert-danger">
                        {% for key,value in KnowledgeForm.errors.items %} 
                        <li>{{ key|escape }} : {{ value|escape }}</li>
                        {% endfor %}
                        </ul>
                    {% endif %}

В этом методе я получаю имя, основанное на том, что используется в models.py, как я могу его изменить?

Наиболее четким и лаконичным способом является использование forloop

Попробуйте заменить весь блок if в вашем HTML на следующий код

{% for field in KnowledgeForm %}
    {% if field.errors %}
        <div class="alert alert-danger">
             {{ field.label_tag }} {{ field.errors }}
        </div>
    {% endf %}
{% endfor %}

Я не думаю, что вам нужно 'errors': str(form.errors),

Потому что вы конвертируете ошибки в str и вам не нужно разделять это.

В вашем шаблоне:

# if you want to use verbose_name just use label_tag.
# label_tag is equal to your verbose name.

{% for field in KnowledgeForm %}
    <div class="fieldWrapper">
        {{ field.errors }}
        {{ field.label_tag }} {{ field }}
    </div>
{% endfor %}

Итак, у вас есть ошибка в верхней части ввода

Вернуться на верх