TypeError:Django距离中的float()参数必须是字符串或数字
我试着从我的模板中获取一个值,那个值是 kmdistance
,但是当我查看页面时,它返回了一个错误。
这是我的 views.py 文件
def display_maps(request):
#bases for city proper
pnt = ButuanMaps.objects.get(clandpin='162-03-0001-017-33').geom
#landproperty__sownerid__id=5 is for government user
kmdistance = request.GET.get("kmtocity", None)
mysection = (request.GET.get("mysection", None))
query_section = Section.objects.all().order_by('id')
...
query_maps = ButuanMaps.objects.filter(landproperty__sownerid__id=5, geom__distance_lte=(pnt, D(km=kmdistance)), ssectionid__id=mysection)
...
这是我的 template.html 文件
<select name="kmtocity" class="form-control">
<option type="text" value="empty">Select Km. away from City Proper</option>
<option value="1">1</option>
<option value="5">5</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="20">20</option>
</select>
当我把这个值放在 distance 里时,它工作得很好。
1 个回答
8
当你在这里查找 request.GET
目录里的 kmdistance
时,如果找不到,它会默认给你一个空值(None)。
kmdistance = request.GET.get("kmtocity", None)
所以,当你稍后把这个空值转换成浮点数时,就会出现错误。
TypeError: float() argument must be a string or a number
为了解决这个问题,在你进行浮点数转换的地方,先检查一下 kmdistance
的值是否存在,然后再进行转换。
if kmdistance is not None:
kmdistance = float(kmdistance)
另外,你也可以使用一个不同的默认值,比如用 0 代替 None
(不过 0 的 kmdistance
可能意味着公里数不对,所以你可以用其他适合你的默认值,比如 100)。