2012-07-10 63 views
0

我正在构建一些简单的事情,即在Django的列表中添加数字。然而,每当我尝试将一个浮点数的字符串值转换为一个浮点数时,它就会抛出一个错误。在代码中更容易看到。无法将字符串转换为奇怪的Django/Python错误。

首先我的观点:

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

我认为这是类似的问题。但是,我仍然无法弄清楚。

谢谢你们!

回答

1

这最好使用内置的总和和request.GETsum(map(float, request.GET.getlist('weightinputboxes')))

+0

getlist方法我改成了这个总权重=求和(request.GET.getlist([“weightinputboxes”]))编写的,并得到了错误难以置信的类型:'列表' – 2012-07-10 01:27:51

+0

你不想要[和] – 2012-07-10 01:29:14

+0

但是,我试过你的第二个代码片段,它的工作。我会将你的问题标记为正确的答案,编辑出第一部分。 – 2012-07-10 01:29:26

相关问题