【发布时间】:2016-11-13 05:56:58
【问题描述】:
我正在尝试将 JSON 对象解析为 Django 模板,以便我可以将此 json 对象解析为 javascript。
以下是我的视图如何创建 json 对象并将其解析为模板:
countries = Country.objects.filter(Enabled=True)
citiesByCountry = {}
for country in countries:
citiesInCountry = City.objects.filter(Enabled=True, Country=country)
cities = []
for city in citiesInCountry:
cities.append(city.Name)
citiesByCountry[country.Name] = cities
context = {'citiesByCountry': json.dumps(citiesByCountry)}
return render(request, 'index.html', context)
现在我想以这种方式检索模板的所有键(将是国家/地区):
{% for country in citiesByCountry%}
<option>{{ country }}</option>
{% endfor %}
但我得到的是字符串中每个字符的选项,而不是整个国家/地区名称。
我尝试使用.item1,但这也没有用。
我没有在上面的示例中显示 JavaScript 代码,因为问题的目的是如何解析和检索 JSON 对象中的字符串。我需要稍后使用 javascript 处理这些数据。具体来说,一旦用户更改国家/地区,我想填充另一个处理城市的下拉列表,因此我想使用 JSON 和 Javascript 来实现这一点,因为我不想在每次更改时刷新页面。
有什么帮助吗?
【问题讨论】:
-
为什么需要解析成javascript?在您的示例中,您没有这样做
-
为什么要将
citiesByCountry编码为 JSON?只需将其作为字典传递给context = {'citiesByCountry': citiesByCountry}之类的上下文,它应该可以工作。 -
感谢您的回复。我没有在上面的示例中显示 JavaScript 代码,因为问题的目的是如何解析和检索 JSON 对象中的字符串。我需要稍后使用 javascript 处理这些数据。具体来说,一旦用户更改国家/地区,我想填充另一个处理城市的下拉列表,因此我想使用 JSON 和 Javascript 来实现这一点,因为我不想在每次更改时刷新页面。
-
@xyres 我照你说的做了,而且过去工作过,但现在我想使用 JavaScript 填充城市下拉列表,我不确定是否可以将 Python 列表解析为 javascript。
-
@John 在这种情况下,Django 的模板语法将不起作用。您必须完全在 JS 中完成。