Django 3 Данные формы не отправляются в БД, а я бы хотел, чтобы отправлялись, что я упускаю?
Это на ранней стадии тестирования, и я ожидаю, что у меня должно быть достаточно средств для записи в БД, и я не вижу никаких признаков сбоя, кроме пустой таблицы после нескольких попыток POST.
#ВЕБ-ФОРМА
<form action="/" method="POST" id="ticketsubmitform">
{% csrf_token %}
<div class="form-control" {% if form.date_submitted.errors %}errors{% endif %}>
{{ form.date_submitted.label_tag }}
{{ form.date_submitted }}
{{ form.date_submitted.errors }}
</div>
<div class="form-control" {% if form.contact_name.errors %}errors{% endif %}>
{{ form.contact_name.label_tag }}
{{ form.contact_name }}
{{ form.contact_name.errors }}
</div>
<div style="padding-bottom: 12pt">
<button type="submit"> >>> Submit Ticket >>> </button>
</div>
</form>
#views.py
def ticketing_app(request):
if request.method == 'POST':
form = TicketForm(request.POST)
if form.is_valid():
ticket = Ticket(
date_submitted=form.cleaned_data['date_submitted'],
contact_name=form.cleaned_data['contact_name'],
)
ticket.save()
else:
form = TicketForm()
return render(request,'authentication/ticketing-app.html',{
"form": form
})
#forms.py
class TicketForm(forms.Form):
date_submitted = forms.DateField(label="Date Submitted:",
required=True,
error_messages={
"required": "Date must not be empty."
})
contact_name = forms.CharField(label="Contact Name:", max_length=45,
required=True,
error_messages={
"required": "Contact Name must not be empty.",
"max_length": "Please enter a shorter name."
})
#models.py
class Ticket(models.Model):
#---Base Meta-----------------------------------------
date_submitted = models.DateField(max_length=15)
contact_name = models.CharField(max_length=45)
- Нет ошибок при отправке - [29/Sep/2021 21:18:55] "POST / HTTP/1.1" 200
- Я не вижу ничего недостающего, что могло бы помешать записи в БД
У вас есть GET /ticketing/
и POST /
- вы размещаете форму на другом URL.
Чтобы повторно отправить форму на тот же URL, измените тег формы на один из следующих:
# Submit to the same URL
<form action="." method="POST" id="ticketsubmitform">
# Hardcode the URL
<form action="/ticketing/" method="POST" id="ticketsubmitform">
# Use the URL tag - you will need to change this depending on your URL pattern names
<form action="{% url 'ticketing' %}" method="POST" id="ticketsubmitform">