Проблема в том, что в этом коде:
args = {'form': form, 'Residential': zones['Residential'],
'School': zones['School'], 'Religious': zones['Religious'],
'Childcare': zones['Childcare'], 'Park': zones['Park']}
return render(request, self.template_name, args)
нет переменной с именем args
, передаваемой шаблону. Переменные, доступные в шаблоне, являются в точности ключами словаря, который вы здесь назвали args
- так form
, School
, Religious
, Childcare
и Park
. Шаблон ничего не знает об имени переменной, которое вы выбрали для использования в самом словаре (на самом деле здесь нет ничего необычного в том, чтобы передавать здесь словарь словаря без имени переменной - хотя вполне законно поместить его в переменную, если это более удобно) .
Таким образом, условия {% if args %}
всегда интерпретировались как False
, потому что args
не существует в том, что касается шаблона.
И есть еще одна ошибка: в языке шаблонов Django, в отличие от самого Python, доступ к любому свойству любого рода осуществляется через точечную запись, а не в квадратных скобках. Так что Childcare[0]
не будет работать вообще - вместо этого вам нужно сделать Childcare.0
.
В официальной документации есть много информации о языке шаблонов Django. .
var text1 = 'Two';
$("select option").filter(function() {
//may want to use $.trim in here
return $(this).text() == text1;
}).prop('selected', true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select>
<option value="0">One</option>
<option value="1">Two</option>
</select>
var text1 = 'Two';
$("select option").filter(function() {
//may want to use $.trim in here
return $(this).text() == text1;
}).attr('selected', true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<select>
<option value="0">One</option>
<option value="1">Two</option>
</select>
Примечание что, в то время как этот подход будет работать в версиях, которые являются выше 1.6, но меньше чем 1,9, это было удержано от использования с тех пор 1.6. Это не будет работать в jQuery 1.9 +.
<час> val()
должны обработать оба случая.
$('select').val('1'); // selects "Two"
$('select').val('Two'); // also selects "Two"
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<select>
<option value="0">One</option>
<option value="1">Two</option>
</select>
Попробуйте это... для выбора опции с текстом myText
$("#my-Select option[text=" + myText +"]").attr("selected","selected");
.prop
вместо .attr
; причина изменения состоит в том, который в 1,9 jQuery отключил старые взломы, которые позволяют Вам использовать .attr
для изменения некоторых свойств DOM, а также HTML-атрибутов. (Google javascript dom properties vs attributes
, если Вы don' t знают различие.)
– Mark Amery
04.05.2020, 12:32
$("#my-Select option[text=" + myText +"]").get(0).selected = true;
стиль время от времени: (...
– Shahriyar Imanov
04.05.2020, 12:33
Я не протестировал это, но это могло бы работать на Вас.
$("select#my-select option")
.each(function() { this.selected = (this.text == myVal); });
смотрите на jQuery selectedbox плагин
selectOptions(value[, clear]):
опции Select значением, с помощью строки в качестве параметра $("#myselect2").selectOptions("Value 1");
, или регулярное выражение $("#myselect2").selectOptions(/^val/i);
.
уже можно также очистить выбранные опции: $("#myselect2").selectOptions("Value 2", true);
matlab -nodisplay "funcname arg1 arg2 arg3 argN"
. Единственное ограничение - то, что всеми аргументами будут строки.
– gerrit
04.01.2020, 16:46
$("#myselect option:contains('YourTextHere')").val();
возвратит значение первой опции, содержащей Ваше текстовое описание. Протестированный это и работы.
value
, если атрибут был определен, и только выбирает текстом, если этиvalue
атрибут отсутствует. Таким образом в этом примере$('select').val('Two')
выберет вторую опцию в 1.3.x, но ни в чем не выполнит 1.4.x. – Crescent Fresh 04.05.2020, 12:36