python django中的分页器在dict上崩溃
我从数据库收集了两种类型的数据: 一个是python django中的分页器在dict上崩溃,python,django,Python,Django,我从数据库收集了两种类型的数据: 一个是[,] 另一个是:[{'naseljenomesto_drzava___naziv':u'Srbija','sifraMesta':u'ZR','nazivMesta':u'Zrenjanin','id':3},{'naseljenomesto' _drzava____naziv':u'Srbija','sifraMesta':u'BG','nazivMesta':u'Beograd','id':1}] 第一个是QuerySet类型,另一个是ValuesQ
[,]
另一个是:[{'naseljenomesto_drzava___naziv':u'Srbija','sifraMesta':u'ZR','nazivMesta':u'Zrenjanin','id':3},{'naseljenomesto'
_drzava____naziv':u'Srbija','sifraMesta':u'BG','nazivMesta':u'Beograd','id':1}]
第一个是QuerySet类型,另一个是ValuesQuerySet
现在我有了Paginator:Paginator=Paginator(filteredData,rowsPerPage)
在第一种情况下,分页器工作,但在第二种情况下崩溃。如何纠正这一点
编辑
编辑2
新错误
回溯(最近一次呼叫最后一次):
文件“C:\Python27\lib\site packages\django\core\handlers\base.py”,第115行,在get\U响应中
响应=回调(请求,*回调参数,**回调参数)
文件“C:\Users\Milan\Desktop\DA_LI_RADI\Test projekat\st_forms\views.py”,第238行,在getFormData中
serializedData=json.dumps({'data':data})
文件“C:\Python27\lib\json\\ uuuuu init\uuuuu.py”,第243行,转储
返回默认编码器编码(obj)
文件“C:\Python27\lib\json\encoder.py”,第207行,在encode中
chunks=self.iterencode(o,\u one\u shot=True)
文件“C:\Python27\lib\json\encoder.py”,第270行,在iterencode中
返回_iterencode(o,0)
默认情况下,文件“C:\Python27\lib\json\encoder.py”,第184行
raise TypeError(repr(o)+“不可JSON序列化”)
TypeError:不可序列化JSON
问题不在于分页,而在于序列化数据的方式:序列化程序。serialize
是为序列化Django模型实例而构建的(从列表或QuerySet
),而不是别的。您可以使用python stdlib中的json
模块来序列化“原始”词典,例如:
import json
print json.dumps({'your': 'dict'})
您可能需要将ValuesQuerySet
转换为一个普通的dict列表,以说服json
模块工作,不过:
# [...]
data = paginator.page(1)
print json.dumps(list(data))
请发布从第二个案例中得到的回溯/错误。如何转换为dicts的普通列表?我相应地编辑了我的答案:您可以将存储在示例中数据变量中的
Page
对象传递到list
构造函数中(因为Page
是)。现在可以工作了:)。但我现在有另一个问题。如何在页面上获取此数据。我这样发送响应:returnhttpresponse({'rows':list(data)})
如何在html页面上处理这个列表?在所有这些之后,我有了(jQuery)deserializedData=$.parseJSON(response)
,但现在这不起作用了……在这里(returnhttpresponse({'rows':list(data)})
),您正试图直接将dict作为响应返回。这行不通。您需要返回json.dumps的字符串输出,或者对于其他类型的数据,返回serializer.serialize
输出。此外,您应该在响应上设置内容类型,例如:HttpResponse(…,content\u type=“application/json”)
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\django\core\handlers\base.py", line 115, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Milan\Desktop\DA_LI_RADI\Test projekat\st_forms\views.py", line 238, in getFormData
serializedData = json.dumps({'data': data})
File "C:\Python27\lib\json\__init__.py", line 243, in dumps
return _default_encoder.encode(obj)
File "C:\Python27\lib\json\encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Python27\lib\json\encoder.py", line 270, in iterencode
return _iterencode(o, 0)
File "C:\Python27\lib\json\encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <Page 1 of 1> is not JSON serializable
import json
print json.dumps({'your': 'dict'})
# [...]
data = paginator.page(1)
print json.dumps(list(data))