博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rest_framework,发起retrieve请求时参数带小数点报404错误
阅读量:4125 次
发布时间:2019-05-25

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

撸代码时,需要获取某只股票的详细数据时报404错误

在这里插入图片描述
lookup_fields属性也没有写错。然后我试着换个字段,采用不带小数点的。就能正常获取到数据那问题就出在小数点上。
通过断点发现数据并没有到达retrieve()函数。那问题应该是出在路由层上面。
然后详细看这个404的报错内容发现以下两个相关路由
在这里插入图片描述
这两个路由都排除了小数点。那如果去掉这个排除项,是否就能正常匹配了?我去试试。
找到路由。删掉这个小数点

def get_lookup_regex(self, viewset, lookup_prefix=''):        base_regex = '(?P<{lookup_prefix}{lookup_url_kwarg}>{lookup_value})'        # Use `pk` as default field, unset set.  Default regex should not        # consume `.json` style suffixes and should break at '/' boundaries.        lookup_field = getattr(viewset, 'lookup_field', 'pk')        lookup_url_kwarg = getattr(viewset, 'lookup_url_kwarg', None) or lookup_field#====================================# 这里        # 修改了正则。去掉了排除小数点 原来的是这样: '[^/.]+'        lookup_value = getattr(viewset, 'lookup_value_regex', '[^/]+')        return base_regex.format(            lookup_prefix=lookup_prefix,            lookup_url_kwarg=lookup_url_kwarg,            lookup_value=lookup_value        )

改完之后就能够正常识别了

在这里插入图片描述
对了 该函数在rest_framework\routers.py下

转载地址:http://xkepi.baihongyu.com/

你可能感兴趣的文章
linux设置开机自启动脚本的最佳方式
查看>>
VUE SPA 单页面应用 微信oauth网页授权
查看>>
phpstorm 集成 xdebug 进行调试
查看>>
npm和node升级的正确方式
查看>>
laravel事务
查看>>
springcloud 连续请求 500
查看>>
vue复用新增和编辑表单
查看>>
Ubuntu 16.04 apt-get更换为国内阿里云源
查看>>
laravel部署到宝塔步骤
查看>>
小程序获取access_token
查看>>
navicat远程连接mysql数据库
查看>>
tp5令牌数据无效 解决方法
查看>>
自己的网站与UCenter整合(大致流程)
查看>>
laravel 制作通用的curd 后台操作
查看>>
【小红书2017年笔试】求一个数组中平均数最大的子数组
查看>>
Linux基础系列-定时器与时间管理
查看>>
Linux基础系列-可执行程序的产生过程
查看>>
Linux基础系列-Kernel 初始化宏
查看>>
Linux子系统系列-I2C
查看>>
<iOS>关于自定义description的一点用法
查看>>