Параметры запроса Django POST не возвращаются в views.py

Я хочу получать значения из POST-запроса. Я хочу взять значение "taken_name" из html-формы в представления.

Я попробовал несколько ответов на вопросы, но мне кажется, что я упускаю очень простую вещь. Я не могу разобраться с этим почти 2 часа.

Имя параметра в html - 'taken_name'.

Также параметры urls и views верны и соответствуют методам, которые упоминаются на stackoverflow.

Я получаю эту ошибку :

'null значение в столбце "имя_посетителя" отношения "посетитель" нарушает not-null ограничение DETAIL: Неудачная строка содержит (15, null, null, null).'

Это означает, что я не могу получить значение из html.

Пробовал: получить значение из POST-запроса в Django

res.html

{% for i in allList %}
<div id="createRecordModal-{{forloop.counter}}" class="modal fade">
  <div class="modal-dialog">
    <div class="modal-content">
      <form method="POST" action="/session/{{visitor_id}}">
        {% csrf_token %}
        <div class="modal-header">
          <h4 class="modal-title" name="taken_table">Masa {{i.table_number}}</h4>
          <button
            type="button"
            class="btn-close btn-close-white"
            data-bs-dismiss="modal"
            aria-hidden="Close"
          ></button>
        </div>
        <div class="modal-body">
          <div class="form-group">
            <label>İsim</label>
            <input
              name="taken_name"
              type="text"
              class="form-control"
              required
            />
          </div>
        </div>
        <div class="modal-footer">
          <button
            type="button"
            class="btn btn-secondary"
            data-bs-dismiss="modal"
            aria-label="Close"
          >
            İptal
          </button>
          <a href="/session/{{visitor_no}}" type="submit" class="btn btn-danger">Kaydet</a>
        </div>
      </form>
    </div>
  </div>
</div>
{% endfor %}

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.loginUser, name="login"),
    path('reservation', views.reservation, name="reservation"),
    path('delete/<str:table_number>', views.delete, name='delete'),
    path('create/<str:table_number>', views.create, name='create'),
    path('session/<str:visitor_id>', views.createSession, name='create2')
]

views.py

def createSession(request, visitor_id):
    addSession = visitor.objects.filter(visitor_id = visitor_id)
    if request.method == "POST":
        taken_name = request.POST.get('taken_name')
        taken_surname = request.POST.get('taken_surname')
        taken_time = request.POST.get('taken_time')
        print(taken_name)
        print(taken_surname)
        print(taken_time)
    else:
        print('method is not POST')

    addSession.create(
        visitor_name = taken_name,
        visitor_surname = taken_surname,
        res_time = taken_time
    )
    context = {
    'addSession': addSession
    }
    return redirect('reservation')

def reservation(request):
    allList = table_inventory.objects.all()
    max_rating = table_inventory.objects.aggregate(Max('table_number')).get('table_number__max')
    visitor_no = visitor.objects.aggregate(Max('visitor_id')).get('visitor_id__max')
    visitor_no +=1
    return render(request, 'reservation.html', {
        'allList': allList,
        'max_rating': max_rating,
        'visitor_no': visitor_no
    })

В своем шаблоне вы используете следующее:

<a href="/session/{{visitor_no}}" type="submit" class="btn btn-danger">Kaydet</a>

Если вы собирались использовать это для отправки формы, это не сработает. Она просто ссылается на URL, указанный в атрибуте href.

Попробуйте что-нибудь вроде:

<button type="submit" class="btn btn-danger">Kaydet</button>
Вернуться на верх