Я пытаюсь отправить сообщение об ошибке, когда пользователь решает отправить кнопку «Купить билеты» без POST.Я не уверен, что использование select и значение параметра конфликтуют.Когда я отправляю без POST, он отправляет значение исключения MultiValueDictKeyError: 'venue'.
models.py
class User(models.Model):
first_name=models.CharField(max_length=100)
last_name=models.CharField(max_length=100)
email=models.CharField(max_length=100)
password=models.CharField(max_length=100)
created_at=models.DateTimeField(auto_now_add=True)
updated_at=models.DateTimeField(auto_now=True)
class Ticket(models.Model):
venue=models.CharField(max_length=100)
quantity=models.PositiveIntegerField()
price=models.DecimalField(default=25.00, max_digits=5, decimal_places=2, null=True, blank=True)
loop=models.CharField(max_length=100)
purchaser = models.ForeignKey(User, related_name="purchases", on_delete=models.PROTECT)
created_at=models.DateTimeField(auto_now_add=True)
updated_at=models.DateTimeField(auto_now=True)
views.py
def add(request):
if not 'user_id' in request.session:
return redirect('/chrisgrafil')
if request.method!='POST':
return redirect ('/dashboard')
error=False
if len(request.POST['venue'])<1:
messages.error(request, "Please select venue")
error=True
if len(request.POST['quantity'])<1:
messages.error(request, "Please select quantity")
error=True
if len(request.POST['loop'])<1:
messages.error(request, "Please select loop")
error=True
else:
Ticket.objects.create(venue=request.POST['venue'], quantity=request.POST['quantity'], loop=request.POST['loop'], purchaser=User.objects.get(id=request.session['user_id']))
return redirect ('/confirmation')
dashboard.html
<form action="/add" method="POST">
{% csrf_token %}
<div class="text-center">
{% if messages %}
{% for message in messages %}
<div class="alert alert-danger p-2 pb-3">
<a class="close font-weight-normal initialism" data-dismiss="alert" href="#"><samp>×</samp></a>
{{message}}
</div>
{% endfor %}
{% endif %}
<label><strong>Location of Venue:</strong></label>
<select class="form-control" name="venue">
<option value="" selected disabled>Please select</option>
<option value="San Bernardino">San Bernardino</option>
<option value="Los Angeles">Los Angeles</option>
<option value="Riverside">Riverside</option>
</select>
<div class="form-group">
<label><strong>Quantity of tickets:</strong></label>
<select class="form-control" name="quantity">
<option value="" selected disabled>Please select</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
</select>
</div>
<div class="form-group">
<label><strong>Hearing Loop:</strong></label>
<select class="form-control" name="loop">
<option value="" selected disabled>Please select</option>
<option value="Yes">Yes</option>
<option value="N/A">N/A</option>
</select>
<small id="hearingloop" class="form-text text-muted">Designed for hearing aid and cochlear implant users accessibility</small>
</div>
<button type="submit" value="/add" class="btn btn-dark">Buy Tickets</button>
</form>
Я могу POST успешно, ноне удается получить сообщения об ошибках, когда пользователь не выполняет POST, даже если я указал его в файле views.py
if the request.method!='POST':
return redirect ('/dashboard')
Я ценю ваши отзывы!