Передача данных из формы в html в views.py не работает

#html #django

#HTML #django

Вопрос:

Я передал значение id из html-формы в views .py. Я хочу проверить, совпадает ли значение с значением в базе данных. Но по какой-то причине это не работает.

list.html

 <form method= 'POST' action = "{% url 'jobs:pinned'%}">
{% csrf_token%}

 <input type ="text" name = "number">
<input type="submit" value="Submit">
</form>
  

views.py

 def pinned(request,category_slug=None):

    users = User.objects.exclude(id=request.user.id)
    jobs_list1 = Jobs.objects.all()
    if request.method =="POST":
         vari = request.GET.get('number')
    for evert in jobs_list1:
        if evert.Job_Id == vari:
            evert.flag = True
            evert.save(update_fields=["flag"])

    context = {
        'job_list1':jobs_list1,
        'users':users
    }

    return render(request, 'jobs/product/list.html',context)
  

Здесь, если я введу статическое значение как 511, т.е. if evert.Job_Id ==511 Оно работает. Но если я изменю его на request.GET.get(‘number’), он не будет работать. Как мне отправить значение из входного значения формы в views.py . Спасибо.

Комментарии:

1. Вы используете POST запрос в форме и пытаетесь получить значения, используя GET на стороне python. если тип запроса POST необходимо использовать request.POST.get('key', None) , если тип запроса GET необходимо использовать request.GET.get('key', None)

Ответ №1:

Первый метод вашей формы — POST, поэтому для метода GET он будет работать.

для метода post попробуйте следующее

      vari = request.POST.get('number')
  

надеюсь, это поможет

Комментарии:

1. @TulasiPrasadBanstola что печатает vari ?

Ответ №2:

Оказывается, я сравнивал строку с целым числом. Таким образом, я решил эту проблему как:

 if request.method =="POST":
        vari = request.POST.get('number')
        vari = int(vari)
        for evert in jobs_list1:
            vari1 = evert.Job_Id
.....