Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Django POST request parameters returns none in views.py

I want to take values from a POST request. I want to take "taken_name" value from html form to views.

I tried several question’s answers, but I think I’ m missing very simple thing. I can not figure it out nearly 2 hours.

Parameter name in html is ‘taken_name’.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Also urls and views parameters are true and matching with the methods which mentioned on stackoverflow.

I’ m getting this error :

‘null value in column "visitor_name" of relation "visitor" violates
not-null constraint DETAIL: Failing row contains (15, null, null,
null).’

This means I can’t get the value from html.

Tried:
get value from POST request in 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
    })

>Solution :

In your template, you are using the following:

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

If you were intending to use this to submit your form, it won’t work. It will simply link to the URL nominated in the href attribute.

Try something like:

<button type="submit" class="btn btn-danger">Kaydet</button>
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading