#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
.....