Django のリストに数字を追加する単純なものを作成しています。ただし、フロートの文字列値をフロートに変換しようとすると、エラーがスローされます。コードを見たほうがわかりやすいです。
まず私の見解:
def submitworkout(request):
user =User.objects.get(username = request.session['username'])
bodyweight =request.GET['weight']
repinputboxes = request.GET['repinputboxes']
totalreps = summation(list(repinputboxes))
try:
float(bodyweight)
except:
bodyweight = None
w = workout(userid = user.id, datesubmitted =datetime.datetime.now(), workoutdate = request.GET['workoutdate'],
bodyweight = bodyweight,
totalreps = totalreps,
totalweight = summation(request.GET['weightinputboxes']),
numexercises = int(request.GET['numexercises']),
numsets = summation(request.GET['numsets']),
)
# w.save()
# workoutid = workout.objects.get(id = w.id)
#createxercise(dict(request.GET),user.id,workoutid.id)
return render_to_response('home.html',{'infoprompt': request.GET},context_instance=RequestContext(request))
def summation(x):
suma = 0
for i in x:
suma += float(i)
return suma
次はトレースバックです。
Environment:
Request Method: GET
Request URL: http://localhost:8000/submitworkout/?workoutdate=&weight=&numexercises=1&exercisename=b&numsets=1&weightinputboxes=32.5&repinputboxes=1
Django Version: 1.3.1
Python Version: 2.7.0
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'authentication',
'tracking')
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\Chris\testdjango\fitness\views.py" in submitworkout
45. totalweight = summation(request.GET['weightinputboxes']),
File "C:\Users\Chris\testdjango\fitness\views.py" in summation
89. suma += float(i)
Exception Type: ValueError at /submitworkout/
Exception Value: could not convert string to float: .
最後になりましたが、問題を引き起こしているローカル変数:
weightinputboxes = u'32.5'
ここで解決される前に、このような別の奇妙なエラーがありました: string index out of range Python, Django
そして、それはその問題に似ていると思います。しかし、私はまだそれを理解することはできません。
みんなありがとう!