使用Django rest framework api时,客户端返回结果为html标签

问题:

在使用rest framework开发过程中,客户端向服务器发送请求,服务器处理后,将结果返回给客户端。遇到一个奇怪的问题,客户端收到的返回结果,在命令行下查看,全是一大串的html标签(实际上是rest framework api的页面)。而实际上,我们期望返回的是我们填写的提示信息,例如,”时间格式错误”,“参数太长”,“成功”等等。

这个肿么解决呢?

解决办法:

  1. 查看DEBUG

    首先怀疑的是settings中的DEBUG问题,经过测试,证明与其无关。

  2. APIException
    服务器经常使用raise APIException来向客户端返回处理结果。APIException作为返回结果的方式,会不会是这里的问题导致客户端收到是html标签呢?
    接着,查看关于exception 的定义
    exception in Django rest framework views exception
    http://www.django-rest-framework.org/api-guide/exceptions/

    也没有获取到有用的信息。

  3. rest framework render
    最后想到是rest framework render的问题。render完成结果的渲染,是用html格式还是json格式。

    rest framework 的配置是通过django settings文件中的REST_FRAMEWORK来定义的。例如,工程的settings文件中可能有类似如下的定义:

    REST_FRAMEWORK = {
        'DEFAULT_RENDERER_CLASSES': (
            'rest_framework.renderers.JSONRenderer',
        ),
        'DEFAULT_PARSER_CLASSES': (
            'rest_framework.parsers.JSONParser',
        )
    }

    如果render定义如下:

    REST_FRAMEWORK = {
    ...
       'DEFAULT_RENDERER_CLASSES': (
           'rest_framework.renderers.BrowsableAPIRenderer',
           'rest_framework.renderers.JSONRenderer',
       ),
    ...
    }

    则返回的是html 。
    render应该定义成这样,并且注意顺序:

    REST_FRAMEWORK = {
    ...
        'DEFAULT_RENDERER_CLASSES': (
            'rest_framework.renderers.JSONRenderer',
            'rest_framework.renderers.JSONPRenderer',
            'rest_framework.renderers.BrowsableAPIRenderer',
            'rest_framework.renderers.XMLRenderer',
        ),
    ...
    }

    关于rest framework settings,更多信息可参考
    http://www.django-rest-framework.org/api-guide/settings/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本门课程重实战,将基础知识拆解到项目里,让你在项目情境里学知识。 这样的学习方式能让你保持兴趣、充满动力,刻知道学的东西能用在哪、能怎么用。 平不明白的知识点,放在项目里去理解就恍然大悟了。   一、融汇贯通 本视频采用了前后端分离的开发模式,前端使用Vue.js+Element UI实现了Web页面的呈现,后端使用Python 的Django框架实现了数据访问的接口,前端通过Axios访问后端接口获得数据。在学习完本章节后,真正理解前后端的各自承担的工作。   二、贴近实战 本系列课程为练手项目实战:学生管理系统v4.0的开发,项目包含了如下几个内容:项目的总体介绍、基本功能的演示、Vuejs的初始化、Element UI的使用、在Django中实现针对数据的增删改查的接口、在Vuejs中实现前端增删改查的调用、实现文件的上传、实现表格的分页、实现导出数据到Excel、实现通过Excel导入数据、实现针对表格的批量化操作等等,所有的功能都通过演示完成、贴近了实战   三、课程亮点 在本案例中,最大的亮点在于前后端做了分离,真正理解前后端的各自承担的工作。前端如何和后端交互   适合人群: 1、有Python语言基础、web前端基础,想要深入学习Python Web框架的朋友; 2、有Django基础,但是想学习企业级项目实战的朋友; 3、有MySQL数据库基础的朋友  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值