django – сбор данных из HTML <select>

Я видел несколько документов о том, как собирать данные из инструкции HTML в Django, но ни один из них не был очень ясен для меня. Есть ли у кого-нибудь настоящий рабочий пример?

В моем случае у меня есть что-то вроде этого в файле шаблона:

<select title="my_options"> <option value="1">Select value 1</option> <option value="2">Select value 2</option> </select> 

Что происходит с view.py, чтобы собрать выбранное значение? Спасибо!

Если это запрос GET, request.GET['my_options'] . Если это POST, тогда request.POST['my_options'] . Это будет строка, либо "1" либо "2" (или "<script>alert('I hacked you!')</script>" )

В любом случае, вероятно, лучше использовать структуру форм Django, чтобы избавить вас от хлопот написания HTML и дезинфекции возвращаемых значений.

Управление данными через POST

 def yourView(request): # Use '.get('id', None)' in case you don't receive it, avoid getting error selected_option = request.POST.get('my_options', None) if selected_option: # Do what you need with the variable 

Одна вещь, которая может быть полезной для форм в Django, заключается в том, чтобы делать разные вещи, если вы отправляете POST на URL-адрес или просто загружаете его:

 def yourView(request): if request.POST: # If this is true, the view received POST selected_option = request.POST.get('my_options', None) if selected_option: # Do what you need to do with the variables return render_to_response(...) return render_to_response(...) 

Есть 2 render_to_response в случае, если вам нужно делать разные вещи, если представление было просто загружено или получить POST.

Управление данными через GET

 def yourView(request): # Use '.get('id', None)' in case you don't receive it, avoid getting error selected_option = request.GET.get('my_options', None) if selected_option: # Do what you need with the variable