Я работаю над приложением django. В приложении у меня есть выпадающая кнопка в форме. Также есть скрытое поле ввода, в котором будет храниться значение выбранного раскрывающегося списка. (Я добился этого с помощью jQuery
). Я хочу получить доступ к значению скрытого поля в файле views.py.
Прямо сейчас, когда форма отправлена, я получаю только возвращаемое значение None. Я не уверен, что делаю не так. Это мой код
HTML шаблон
<form method="post" action="{% url 'test_app:get_data' %}">
{% csrf_token %}
<div class="dropdown">
<button class="btn btn-primary btn-lg btn-block dropdown-toggle fruit-btn" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Fruit
</button>
<input type="hidden" name="fruit-name" id="fruit-name" value="" disabled>
<div class="dropdown-menu">
<ul class="list-group" role="menu" aria-labelledby="dropdownMenu">
<li class='list-group-item'><a class="btn btn-lg dropdown-item" href="#">Apple</a></li>
<li class='list-group-item'><a class="btn btn-lg dropdown-item" href="#">Banana</a></li>
<li class='list-group-item'><a class="btn btn-lg dropdown-item" href="#">Mango</a></li>
</ul>
</div>
</div>
...
<button type="submit" class="btn btn-primary btn-block btn-lg mt-5">Submit</button>
</form>
views.py
def test_data(request):
if request.method == 'POST':
fruit = request.POST.get('fruit-name')
print(fruit)
return redirect("test_app:root")
return render(request, 'test_app/root.html')
jquery код для получения значения кнопки в скрытое поле ввода
$(document).ready(function() {
$('.dropdown-item').click(function() {
$('.fruit-btn').text($(this).text());
$('.fruit-btn').val($(this).text());
$('#fruit-name').val($(this).text());
console.log($('#fruit-name').val())
})
})
Это результат jquery console.log
, когда я нажимаю на конкретный фрукт
Mango
Это результат python print(fruit)
от views.py
при отправке формы
None
Я не уверен, что делаю неправильно. Есть предложения?