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