本文共 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/