美文网首页
问题3 django 关于modal序列化最优解

问题3 django 关于modal序列化最优解

作者: xxxcremove | 来源:发表于2019-06-07 08:23 被阅读0次

关于modal序列化,生成json数据返回的应该方法是serializers

重点代码:

def se(data):
    """序列化"""
    data = serializers.serialize("json", data, ensure_ascii=False)
    data = json.loads(data)
    return data

上面代码解释

之前的获取json数据的做法,是使用格式化,单个,暂时优化不考虑单个

但是有点不好的是,返回的json数据是有"d"的注释,如果单纯获取数据,那么是要实现解析文本内容,处理一下的。

经过测试,注意到,序列化,然后再json.loads(json_data)得到的对象数据,返回json数据的时候是没有"d"什么的注释。

json_data = serializers.serialize("json", goods, ensure_ascii=False)
json_data = json.loads(json_data)

序列化+加载为对象 =》 解释serializers.serialize("json",goods,ensure_ascii=False)是生成json字符串=>json.loads(json_data)生成对象,JsonResponse(json_data,safe=False)返回值就没有反斜杠了。

注意到的第二点,下面代码中,如果是直接json_data[index]["comment"] = serializers.serialize("json",comments)会有两个反斜杠。

着重的意思就是:序列化是获取的字符串,json字符串是会有反斜杠的,
全部:

from django.shortcuts import render
import json
from django.http import HttpResponse
from django.http import JsonResponse
from goods_deal.models import Students, Goods,GoodsComments
from goods_deal.models_view import ViewGoods
from goods_deal.tools.json_encoder import MyEncoder
#  导入Paginator,EmptyPage和PageNotAnInteger模块
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.core import serializers
# Create your views here.


def se(data):
    """序列化"""
    data = serializers.serialize("json", data, ensure_ascii=False)
    data = json.loads(data)
    return data


def get_goods(request):
    """
    功能特点: 获取物品, 物品的评论,评论的评论
    实现分页功能
    :param request:
    :return:
    """
    # 获取参数
    if request.method == 'POST' or 1 == 1:
        body = {}  # json.loads(request.body)
        current_page = body["current_page"] if "current_page" in body else 0
        length_page = body["length_page"] if "length_page" in body else 10
        goods = Goods.objects.all()
        # 生成paginator对象,定义每页显示多少条记录
        paginator = Paginator(goods, length_page)
        try:
            goods = paginator.page(current_page)
        except PageNotAnInteger:
            goods = paginator.page(1)
        except EmptyPage:
            goods = paginator.page(paginator.num_pages)
        json_data = se(goods)
        for index, good in enumerate(goods):
            comments = good.GOOD_COMMENTS.all()
            json_comments = se(comments)
            json_data[index]["comments"] = json_comments
        return JsonResponse(json_data, safe=False)
    return None
# JsonResponse(json.dumps(goods, cls=MyEncoder), safe=False)

基于django开发的物品交易网站过程

相关文章

  • 问题3 django 关于modal序列化最优解

    关于modal序列化,生成json数据返回的应该方法是serializers 重点代码: 上面代码解释 之前的获取...

  • O.M.

    1.最优化问题 无约束:约束: 2.最优解 [严格]局部最优解:[严格]全局最优解: 3.函数 n元单值函数的一阶...

  • 五大基本算法——动态规划算法

    一、基本要素 1、最优子结构性质 大问题的最优解包含了小问题的最优解,小问题的最优解又可以合并成大问题的最优解。 ...

  • 思想 / 贪心算法

    适用贪心算法的场合 问题能够分解成子问题来解决,子问题的最优解能递推到最终问题的最优解。这种子问题最优解被称为最优...

  • 动态规划

    与贪心算法求局部最优解相比,动态规划求的是全局最优解(但不是每个问题都有最优解,比如NP完全问题就没有最优解) 例...

  • 算法:动态规划

    性质:用于求解最优化问题。最优子结构:当前问题的最优解包含子问题的最优解。重叠子问题:再求取当前最优解的过程中,存...

  • 动态规划与背包问题

    动态规划算法核心思想:1.刻画问题的最优解的结构特征2.递归定义最优解的值3.自底向上的方式计算最优解的值4.构造...

  • 改变自己:局部最优与全局最优

    局部最优与全局最优 思维模型 优化问题的局部最优解是指在临近解集合当中的最优(最大或者最小)解。相对应的是全局最优...

  • 动态规划

    动态规划前提: 1、最优化原理:最优解的子问题也是最优,具有最优子结构。 2、无后效性:只与当前状态有关。 3、有...

  • 动态规划解决最长回文子串问题

    先复习一下动态规划的三个特征: 最优子结构:就是问题的最优解包含子问题的最优解,也就是可以通过子问题的最优解,推导...

网友评论

      本文标题:问题3 django 关于modal序列化最优解

      本文链接:https://www.haomeiwen.com/subject/cvxmxctx.html