0

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

そして、それはその問題に似ていると思います。しかし、私はまだそれを理解することはできません。

みんなありがとう!

4

1 に答える 1

1

これは、組み込みの sum と次のgetlistメソッドを使用して記述するのが最適です。request.GET sum(map(float, request.GET.getlist('weightinputboxes')))

于 2012-07-10T01:20:49.533 に答える