这是我在Django中编写的小型统计应用程序的代码。我需要从网页读取字符串输入,将逗号分隔值解析为浮点列表。我一直得到相同的错误。 这是我得到的错误:
Environment:
Request Method: GET
Request URL: http://localhost:8000/
Django Version: 1.4
Python Version: 2.7.6
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'statistics')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Utsav.Chinka-PC\Documents\Visual Studio 2010\Projects\StatCalc\StatCalc\statistics\views.py" in calculate
9. string = [float(x) for x in string]
Exception Type: ValueError at /
Exception Value: could not convert string to float:
这是我的 view.py :
from django.shortcuts import render_to_response
import stat_func
def calculate(request):
query = request.GET.get('q','')
string = query.split(',')
error=0
map(float,string)
output = []
output = stat_func.calc(string)
output[9]=1
return render_to_response("templates/stat_page.html", {
"results": output,
"query": query
})
即使这似乎也不起作用:
string = [float(x) for x in string]
刚接触Django我不得不花费大量时间在这上面,并且无法解决这个问题。请帮忙!
答案 0 :(得分:1)
你没有拥有查询字符串;您的网址参数没有q=
参数:
Request URL: http://localhost:8000/
因此,当您尝试从请求中获取不存在的query
参数时,q
将设置为空字符串:
query = request.GET.get('q','')
此字符串无法转换为浮点值:
>>> ''.split(',')
['']
>>> float('')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float:
您必须处理查询为空的情况,而不是尝试将其解析为浮点值。
如果您实际传入了q
参数,那么您的代码可以正常工作:
http://localhost:8000/?q=0.42,8.181
并实际存储了map()
调用的结果:
float_values = map(float, string)
然后使用float_values
中的浮点值列表做了一些有意义的事情。