Список ошибок формы Django появляется даже при отсутствии попыток отправки

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

Это моя форма класса Python:

class Place_A_Bid_Form(forms.Form):
    listing = forms.CharField(widget=forms.TextInput(attrs={"type":"hidden"}))
    bid = forms.IntegerField(widget=forms.NumberInput(attrs={"class":"form-control"}),
    min_value=1)

Form's html:

<form action="{% url 'place_a_bid' listing.title %}">
                {% csrf_token %}
                <div class="form-row">
                    <div class="col">
                        {{ form }}
                    </div>
                    <div class="col">
                        <input class="btn btn-primary" type="submit" value="Place a bid">
                    </div>
                </div>
            </form>

И просмотр:

def details(request, listing):
    listing_obj = Listing.objects.get(title=listing)
    form = Place_A_Bid_Form({"listing":listing_obj.title})
    categories = Category.objects.all()
    user = User.objects.get(username=request.user.username)
    if listing_obj in user.created_listings.all():
        return render(request, "auctions/details.html", {
            "listing": listing_obj,
            "categories": categories,
            "creator": True
        })
    elif listing_obj in user.watchlist.all():
        return render(request, "auctions/details.html", {
            "listing": listing_obj,
            "categories": categories,
            "in_watchlist": True,
            "form": form
            })
    else:
        return render(request, "auctions/details.html", {
            "listing": listing_obj,
            "categories": categories,
            "in_watchlist": False,
            "form": form
            })

Что я делаю неправильно? Заранее спасибо.

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

<form action="{% url 'place_a_bid' listing.title %}" method="post">

Почему вы получаете ошибки, даже если форма не отправляется?

Это form = Place_A_Bid_Form({"listing":listing_obj.title}) создает связанную форму, которая даст ошибку, так как bid требуется и отсутствует.

Возможно, вы хотели создать несвязанную форму с исходными данными, например, так:

form = Place_A_Bid_Form(initial={"listing":listing_obj.title})

Это создаст такую же форму на вашем html, но поскольку она не связана, она не выдаст никаких ошибок, если только она не будет отправлена с отсутствующим полем bid.

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

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