отображать django form.errors рядом с полем - PullRequest
0 голосов
/ 18 июня 2019

Когда после отправки формы, реализованной в django, появляется какая-то ошибка, она отображается вверху страницы, где у меня есть form.errors. Здесь я хочу, чтобы эта ошибка отображалась рядом с полем, из-за которого происходит ошибка, как в форме создания пользователя django. Кроме того, все введенные значения исчезают после сообщения об ошибке. Как это сделать ??

forms.py

class AddVendorForm(forms.ModelForm):
    class Meta:
        model = Vendor
        fields = '__all__'

views.py

def add_vendor(request):
    if request.method == 'POST':
        form = AddVendorForm(request.POST or None)
        if form.is_valid():
            vendor = form.save(commit=False)
            vendor.save()
            messages.success(request, '{} vendor added.'.format(vendor.name))
            return redirect('add_vendor')
    else:
        form = AddVendorForm()
    return render(request, 'add_vendor.html', {'form': form})

шаблон

{% if form.errors %}
        <div class="alert alert-danger">
            {{ form.errors }}
        </div>
     {% endif %}

<form action="{% url 'add_vendor' %}" method="post">
   {% csrf_token %}

    <h5>Name <span class="text-danger"></h5>

      <input type="text" name="name" class="form-control" required>

       <h5>Address <span class="text-danger"></h5>

     <input type="text" name="address" class="form-control" >

 <h5>Contact Number <span class="text-danger"></h5>

    <input type="text" name="contact" class="form-control" required>

   <button type="submit" class="btn btn-info">Add</button>
                        </form>

Ответы [ 2 ]

1 голос
/ 18 июня 2019

ошибка {{form.errors}}. Вы пытаетесь так

<div class="alert alert-danger">
        <ul>
            {% for field in form %}
                {% if field.errors %}<li>{{ field.label }}: {{ field.errors|striptags }}</li>{% endif %}
            {% endfor %}
        </ul>
</div>
1 голос
/ 18 июня 2019

Цикл по полям формы

{% for field in form %}
    <div class="fieldWrapper">
        {{ field.label_tag }} {{ field }}
        {% if field.help_text %}
        <p class="help">{{ field.help_text|safe }}</p>
        {% endif %}
        <div class="alert alert-danger">{{ field.errors }}</div> 
    </div>
{% endfor %}

Ссылка: https://docs.djangoproject.com/en/2.2/topics/forms/#looping-over-the-form-s-fields

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...