为啥这个 Django 错误“要解压的值太多”?
Posted
技术标签:
【中文标题】为啥这个 Django 错误“要解压的值太多”?【英文标题】:Why this Django error "Too Many Values to Unpack"?为什么这个 Django 错误“要解压的值太多”? 【发布时间】:2017-05-21 18:52:39 【问题描述】:我有一个通过模板中的 Ajax 函数调用的 Django 视图。我的模板有一个“国家”下拉菜单和一个“地区”(或州)下拉菜单。当用户单击某个国家/地区时,我想使用 Ajax 函数来获取该国家/地区的所有区域(或州)并使用该数据填充“区域”下拉列表。但是,当我的视图执行并尝试返回查询集时,我收到此错误:
ValueError: too many values to unpack
这里是模板标签和Ajax函数:
# demo.html
<select id="id_country" name="country" onchange="getState(this.value);">
<option value="" selected="selected">Please choose...</option>
<option value="US">United States</option>
<option value="GB">United Kingdom</option>
<option value="CA">Canada</option>
</select>
<script>
function getState(val)
$.ajax(
type: "GET",
url: "/demo/get_region",
data:'country_id='+val,
success: function(data)
$("#id_region").html(data);
);
</script>
这里是视图:
# views.py
from location.models import CountryRegion
def get_region(request):
country_id = request.GET.get('country_id', None)
country_region = CountryRegion.objects.filter(country_cd=country_id)
# Error occurs here on the return
return country_region
模型(我意识到没有标准化)看起来像这样:
class CountryRegion(models.Model):
country_cd = models.CharField(max_length=2)
country_name = models.CharField(max_length=50)
region_cd = models.CharField(max_length=3)
region_name = models.CharField(max_length=50)
数据库记录如下所示:
id country_cd country_name region_cd region_name
59 US United States NY New York
为什么会出现这个错误?如果国家代码是“美国”,我会 返回 50 个实例,每个状态一个。是否有一些限制 Django 视图可以返回多少数据?
【问题讨论】:
Django view returning json without using template的可能重复 您应该返回Response
对象而不是 CountryRegion
对象。见docs.djangoproject.com/en/1.10/topics/http/views
【参考方案1】:
你必须先导入json, 导入 json 然后 返回 HttpResponse( json.dumps(country_region), content_type="应用程序/json" )
【讨论】:
以上是关于为啥这个 Django 错误“要解压的值太多”?的主要内容,如果未能解决你的问题,请参考以下文章