Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python django中的分页器在dict上崩溃_Python_Django - Fatal编程技术网

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))