DRF返回JsonResponse参数设置疑惑点.safe=False 解决...
发布日期:2021-06-29 02:23:16 浏览次数:2 分类:技术文章

本文共 1596 字,大约阅读时间需要 5 分钟。

回顾DRF框架时,产生疑惑点

代码如下:

class BooksAPIVIew(View):    def get(self, request):        """        查询所有图书        路由:GET /books/        """        queryset = BookInfo.objects.all()        book_list = []        for book in queryset:            book_list.append({
'id': book.id, 'btitle': book.btitle, 'bpub_date': book.bpub_date, 'bread': book.bread, 'bcomment': book.bcomment, 'image': book.image.url if book.image else '' }) return JsonResponse(book_list, safe=False)

问题点:

return JsonResponse(book_list,safe=False),其中safe=False是做什么用,联想到类似于过滤器中的safe防转译…

解决问题 >>>

类似于此种问题,直接进去JsonResponse源码里面找答案,是最有效的方法,

def __init__(self, data, encoder=DjangoJSONEncoder, safe=True,                 json_dumps_params=None, **kwargs):        if safe and not isinstance(data, dict):            raise TypeError(                'In order to allow non-dict objects to be serialized set the '                'safe parameter to False.'            )        if json_dumps_params is None:            json_dumps_params = {
} kwargs.setdefault('content_type', 'application/json') data = json.dumps(data, cls=encoder, **json_dumps_params) super(JsonResponse, self).__init__(content=data, **kwargs)

其中:

if safe and not isinstance(data,dict):	raise TypeError(		'In order to allow non-dict objects to be serialized 'safe parameter to False')

告诉我们,当safe=True并且所传过来的data不是dict类型时,会引发异常,提醒我们如果传过来的objects不是dict,就将safe参数设置为False.

其实这也告诉了我们一点,标准的JsonResponse内的数据类型应该为dict字典类型,而不该是其他类型。

如有说得不对,还请点醒我 傲娇脸哈哈哈

转载地址:https://blog.csdn.net/Yyb1201/article/details/108436127 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python中time模块与datetime模块下的strftime和strptime方法
下一篇:口令破解基础

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月14日 13时34分44秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章