#python #html #django #templates #html-select
#python #HTML #django #шаблоны #html-select
Вопрос:
Я использую Python27 с Django 1.5.
я часами безуспешно искал в Интернете. Есть ли способ захватить то, что пользователь выбрал из выпадающего списка в шаблоне, без использования моделей? Я ищу прямой способ считывания какой-либо переменной в коде в views.py .
example.html
<select name="num_select">
<option value="0">-----</option>
<option value="10">1 - 10</option>
<option value="20">10 - 20</option>
<option value="30">20 - 30</option>
<option value="40">30 - 40</option>
<option value="all">all</option>
</select>
какой бы вариант я ни выбирал, я хочу передать значение переменной в моем views.py
views.py
def my_view(request):
...
num_select = forms.????.get['num_select']
...
return blah blah....
Я надеюсь, что я предоставил достаточно подробностей, чтобы вы могли мне помочь. Не уверен, что еще я могу добавить. Я безуспешно просматривал страницы документов. Я знаю, как получить переменные из views.py к html-шаблонам, но не наоборот.
Помощь очень ценится.
Комментарии:
1. используйте
print(forms)
или дажеprint( dir(forms) )
для того, чтобы посмотреть, что у вас есть в формах.2. спасибо за ответ. не знаю, как использовать это, чтобы получить то, что мне нужно. судя по приведенному ниже, я думаю, что у меня все должно быть хорошо. Спасибо!
3.
dir(object)
возвращает все функции и переменные в объект — это полезно, если вы не помните имена и не используете IDE с автозаполнением.
Ответ №1:
Да, вам вообще не нужны модели для этого, вам нужна простая форма django.
CHOICES = ( (1,"10"), (2,"20"), ...)
class MyForm(forms.form):
...
num_select = forms.ChoiceField(choices = CHOICES)
...
Тогда, на ваш взгляд
from myapp.forms import MyForm
def my_view(request):
if request.method = 'POST':
form = MyForm(request.POST)
if form.is_valid():
num_select = form.cleaned_data['num_select']
Это, конечно, довольно урезанная его версия, для получения дополнительной информации обратитесь к ссылке выше.
Если вы также не хотите использовать форму, вы можете просто получить доступ request.POST
напрямую, но тогда какой смысл использовать Django? вы могли бы также использовать PHP
Комментарии:
1. да! было почти там. похоже, это именно то, что мне нужно. Спасибо.
Ответ №2:
Вы можете читать необработанные данные формы с помощью HttpRequest.POST
API
https://docs.djangoproject.com/en/1.10/ref/request-response/#django.http .HttpRequest.Публикация
Это объект, подобный словарю, содержащий все заданные параметры HTTP POST.
Вы можете просто request.POST['num_select']
Не забудьте включить if request.method == 'POST':
перед использованием request.POST
Комментарии:
1. это выглядит интересно… я определенно поиграю с этим. Спасибо!