Python中文
首页
教程
问答
标签
搜索
登录
注册
Django:控制json序列化
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>有没有办法在django中控制json序列化?下面的简单代码将以json格式返回序列化对象:</p> <pre><code>co = Collection.objects.all() c = serializers.serialize('json',co) </code></pre> <p>json将类似于:</p> ^{pr2}$ <p>你可以看到它在以一种你可以重新创建整个模型的方式序列化它,你想在某个时候这样做吗-公平,但对简单的JS-ajax来说不是很方便:我想把流量降到最低,让整个事情变得更清晰。在</p> <p>我所做的是创建一个将对象传递给.json模板的视图,该模板将执行以下操作以生成“更好”的json输出:</p> <pre><code>[ {% if collections %} {% for c in collections %} {"id": {{c.id}},"sortOrder": {{c.sortOrder}},"name": "{{c.name}}","urlName": "{{c.urlName}}"}{% if not forloop.last %},{% endif %} {% endfor %} {% endif %} ] </code></pre> <p>这确实有效,而且输出量很大(?)更好:</p> <pre><code>[ { "id": 1, "sortOrder": 0, "name": "Город и архитектура", "urlName": "architecture" }, { "id": 2, "sortOrder": 1, "name": "Природа", "urlName": "nature" }, { "id": 3, "sortOrder": 2, "name": "Объекты и натюрморт", "urlName": "objects" } ] </code></pre> <p>但是,我的解决方案使用模板的速度太快了(这是处理过程中的一个额外步骤,可能会对性能产生影响),例如,如果要更新模型,则需要手动维护。在</p> <p>我认为json生成应该是模型的一部分(如果我错了,请纠正我),并使用本机pythonjson和django实现来完成,但无法确定如何使它去掉我不想要的部分。在</p> <p>还有一件事——即使我将它限制为一组要序列化的字段,它也会将id始终保持在元素容器之外,而将其作为“pk”显示在元素容器之外。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我建议您使用<a href="http://docs.python.org/library/json.html" rel="nofollow">the json library</a>对数据进行编码,而不是自己构造类似json的字符串。首先,上面的代码似乎不能正确地处理转义。编写自己的序列化程序并没有什么好处(除了bug)。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
7 回答
无法使用Django\u mssql\u后端迁移到外部hos
9 回答
无法使用Django&Python3.4连接到MySql
5 回答
无法使用Django+nginx上载媒体文件
8 回答
无法使用Django1.6导入名称模式
7 回答
无法使用Django1.7和mongodb登录管理站点
6 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
10 回答
无法使用Djangockedi验证CBV中的字段
7 回答
无法使用Djangocketditor上载图像(错误400)
2 回答
无法使用Djangocron进行函数调用
10 回答
无法使用Djangofiler djang上载文件
8 回答
无法使用Djangokronos
6 回答
无法使用Djangomssql provid
9 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
2 回答
无法使用Djangomssq迁移Django数据库
9 回答
无法使用Djangonox创建用户
2 回答
无法使用Djangopyodb从Django查询SQL Server
10 回答
无法使用Djangopython3ldap连接到ldap
5 回答
无法使用Djangoredis连接到redis
4 回答
无法使用Django中的FK创建新表
3 回答