Отображение ошибки при наличии ошибок в полях
Я пытаюсь выдать ошибку для пустых полей или полей, которые не проверяются в форме. поэтому я делаю этот метод ниже, но я знаю, что это не лучший способ...
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 %}
Итак, у вас есть ошибка в верхней части ввода