我按照Django网站上的教程,尝试在Django网站的教程results.html
创建级联下拉列表。
我在javascript函数中使用Django标记{{ }}
和{% %}
时遇到语法错误。我使用的IDE是Komodo Edit,它将此行{% for item in question.choice_set.all %}
突出显示为红色,并指出错误:Javascript:SyntaxError:expected expression,got'%'。
我想问一下如何解决这个问题?
非常感谢!以下是我的html脚本。
results.html
<!doctype html>
<html>
<body>
<script type="text/javascript">
function change(chosen,updateList){
document.getElementById('text').value = chosen;
updateList.options.length=0;
{% for item in question.choice_set.all %}
if (item = chosen) {
updateList.options[updateList.options.length] = new Option({{item.votes}}, '')
}
{% endfor %}
}
</script>
<form name='form' action="{% url 'polls:results' quezstion.id %}", method='post'>
{% csrf_token %}
<h1>{{ question.question_text }}</h1>
<select name="Choice" onchange="change(document.form.Choice.options[document.form.Choice.selectedIndex].value, document.form.Votes)">
{% for item in question.choice_set.all %} //question used here is defined in views
<option value="{{item.id}}">{{ item.choice_text }}</option>
{% endfor %}
</select>
<select name="Votes">
<option></option>
</select>
</form>
答案 0 :(得分:0)
如果您想在嵌入式js中使用视图中的数据,则必须在视图中序列化此数据手动(例如我在项目中如何实现它):
来自CBV的get_context_data :( django 1.6 python 2.7)
import json
from django.utils.safestring import mark_safe
# ...
def get_context_data(self, **kwargs):
context = super(LargeMapView, self).get_context_data(**kwargs)
human_values = Human.objects.values(
'pk', 'fio',
'lat_deg', 'lat_min', 'lat_sec',
'lon_deg', 'lon_min', 'lon_sec',
)
context['human_data'] = mark_safe(json.dumps(list(human_values), ensure_ascii=False))
return context
模板的一部分:
<script>window.jQuery || document.write('<script src="{% static 'js/jquery-1.11.1.min.js' %}"><\/script>')</script>
<script type="text/javascript">
var humanList = {{ human_data }};
$.each(humanList, function (index, human) {
var coords = getCoords(
human['lat_deg'], human['lat_min'], human['lat_sec'],
human['lon_deg'], human['lon_min'], human['lon_sec']
);
});
</script>