#python #django #jquery-select2
#python #django #jquery-select2
Вопрос:
У меня есть рабочий выпадающий список Select2 Multi в моем html, но как мне вернуть эти значения обратно в Django для использования в серверной части?
Например, в моем html у меня есть:
<script>
$(document).ready(function()
{
$("#ddlselect").select2({
placeholder:'Select from List',
closeOnSelect:false
});
});
</script>
Затем я заполняю выпадающий список следующим кодом:
<select id="ddlselect" multiple="multiple" style="width: 250px;">
{% for item in mylist %}
<option> {{ item }} </option>
{% endfor %}
</select>
Это работает, и я могу выбирать из выпадающего списка.
Я могу получить значения, используя следующее в html:
<script>
function myFunction() {
alert("Selected value is: " $("#ddlselect").select2("val"));
}
</script>
Теперь, как мне вернуть эти значения в мои представления Django?
Я попробовал следующее —
class newoption(TemplateView):
template_name = 'home/page.html'
def get(self, request):
return render(request, self.template_name, dict)
def post(self, response):
a = response.POST['ddlselect']
Я получаю сообщение об ошибке при попытке вернуть a для использования в серверной части. Как мне извлечь выбранные значения из select2MultiSelect?
Ответ №1:
Вы можете использовать метод getlist():
Возвращает список данных с запрошенным ключом. Возвращает пустой список, если ключ не существует, а значение по умолчанию равно None. Гарантируется возврат списка, если указанное значение по умолчанию не является списком.
self.request.POST.getlist('ddlselect')
Что-то вроде этого:
from django.http import HttpResponse
class NewOption(TemplateView):
...
def post(self, request, *args, **kwargs):
ddl = request.POST.getlist('ddlselect')
... Some code here ...
return HttpResponse("Submitted!")
Также добавьте name
атрибут в свой html select:
<select name="ddlselect" id="ddlselect" multiple="multiple" style="width: 250px;">
...
</select>
Комментарии:
1. Спасибо за ответ. Я возвращаю пустой список в своем коде. Есть ли что-нибудь еще, что мне нужно добавить / рассмотреть?
2. Что вы имели в виду — «Я возвращаю пустой список в свой код»?
3. Переменная ddl возвращает пустой список вместо выбранных значений из multiselect.
4. @MC2020, распечатай свой
request.POST
. Вы что-нибудь видите?5. @MC2020, добавьте
name="ddlselect"
в свой выбор