Как получить значение из выпадающего списка django?
должен ли я использовать следующую конструкцию?
def PageObjects(request):
q = bla_bla_bla(bla_bla)
answer = request.POST['value']
<form action="PageObjects" method="get">
<select >
<option selected="selected" disabled>Objects on page:</option>
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="40">40</option>
<option value="50">50</option>
</select>
<input type="submit" value="Select">
</form>
Как я могу решить эту проблему? Что мне нужно написать?
3 ответов
Я бы рекомендовал отправить ваши данные с post:
<form action="PageObjects" method="post">
<select >
<option selected="selected" disabled>Objects on page:</option>
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="40">40</option>
<option value="50">50</option>
</select>
<input type="submit" value="Select">
</form>
и вы должны получить доступ к значениям формы через cleaned_data
словарь:
def page_objects(request):
if request.method == 'POST':
form = YourForm(request.POST)
if form.is_valid():
answer = form.cleaned_data['value']
Я действительно рекомендую вам прочитать документы Django:
https://docs.djangoproject.com/en/1.4/topics/forms/#using-a-form-in-a-view
дать имя тега, например
<select name="dropdown">
<option selected="selected" disabled>Objects on page:</option>
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="40">40</option>
<option value="50">50</option>
</select>
доступ к нему в виде
def PageObjects(request):
q = bla_bla_bla(bla_bla)
answer = request.GET['dropdown']
создать файл forms.py внутри "your_app_folder"
in forms.py:
class FilterForm(forms.Form):
FILTER_CHOICES = (
('time', 'Time'),
('timesince', 'Time Since'),
('timeuntil', 'Time Untill'),
)
filter_by = forms.ChoiceField(choices = FILTER_CHOICES)
in views.py
from .forms import FilterForm
def name_of_the_page(request):
form = FilterForm(request.POST or None)
answer = ''
if form.is_valid():
answer = form.cleaned_data.get('filter_by')
// notice `filter_by` matches the name of the variable we designated
// in forms.py
эта форма будет генерировать следующий HTML:
<tr><th><label for="id_filter_by">Filter by:</label></th><td><select id="id_filter_by" name="filter_by" required>
<option value="time" selected="selected">Time</option>
<option value="timesince">Time Since</option>
<option value="timeuntil">Time Untill</option>
</select></td></tr>
обратите внимание на поле опции с выбранным атрибутом, когда вы отправляете форму, в вашем views.py файл вы будете захватить данные из С
answer = form.cleaned_data.get('filter_by')