2015-10-27 1 views
0

Je suis coincé sur une partie de mon code où j'ai besoin de convertir la valeur d'un bouton radio d'une chaîne en un entier car la fonction utilisée dans la valeur prend un entier. Lorsque le bouton radio est sélectionné et que l'utilisateur appuie sur submit, j'obtiens une chaîne de cette valeur lorsque j'ai besoin d'un entier. J'ai essayé les tactiques de base de conversion en python comme int() mais j'ai un TypeError: l'argument int() doit être une chaîne, un objet de type octets ou un nombre, pas 'list'. Existe-t-il d'autres moyens de convertir cette valeur en int? Par exemple quand je l'imprime je reçois [ '14'] quand j'ai besoin 14.Convertir une chaîne en nombre entier python CGI

Mon script location_table

import cgi 
import cgitb 
cgitb.enable() 
from A3 import db_access 
from area_selection import page 
fs = cgi.FieldStorage() 
area_id = fs.getlist('area') 

if len(area_id)==0: 
    page("Exactly 1 selected") 
    quit() 
try: 
    area_id= int(area_id[0]) 
except Exception as exc: 
    page("area id should be valid int: " + str(area_id)) 
    quit() 


location = db_access.get_locations_for_area(area_id) 


if not location: 
    page("area with id {} does not exist".format(area_id)) 
    quit() 



def page(*messages): 
    print("Content-Type: text/html; charset=UTF-8") 
    print("") 
    print (''' 
    <!DOCTYPE html> 
    <html> 
     <head> 
      <title>{}</title> 
      <link rel="stylesheet" type="text/css" href="/style1.css"/> 
     </head> 
     <body> 
    '''.format("Areas")) 

    def name_key(x): 
      return x['location_id'] 



    print("<form method='get' action='measurement_table.py'>") 
    print("<name='area'>") 

    print("<table class='grid'>") 
    row_template = "<tr>" \ 
        "<td>{}</td>" \ 
        "<td>{}</td>" \ 
        "<td>{}</td>" \ 
        "<td>{}</td>" \ 
        "</tr>" 
    print("<tr><th>Select</th><th>ID</th><th>Name</th><th>Altitude</th></tr>") 
    for x in sorted(location, key=name_key): 
     location_id = x['location_id'] 
     name = x['name'] 
     alt = x['altitude'] 
     radio = "<input type='radio' name='location_id' value={:.0f}>".format(location_id) 
     print(row_template.format(radio,location_id, name, alt)) 
    print("</input>") 
    print("</table>") 
    print("<p>" 
      "<input type='submit' value='Get Measurement Information'>" 
      "</p>") 

    print(''' 
     </body> 
    </html> 
''') 

if __name__=="__main__": 
    page() 

mon script measurements_table que location_table liens lorsque l'utilisateur presse soumettent

import cgi 
import cgitb 
cgitb.enable() 
from A3 import db_access 
from area_selection import page 
fs = cgi.FieldStorage() 

location_id = fs.getlist('location_id') 
byte = int(location_id[0]) 

if len(location_id)==0: 
    page("Exactly 1 selected") 
    quit() 
try: 
    area_id= int(location_id[0]) 
except Exception as exc: 
    page("area id should be valid int: " + str(location_id)) 
    quit() 

mea = db_access.get_measurements_for_location(location_id) 

Le problème que je vais avoir à partir du code location_table:

radio = "<input type='radio' name='location_id' value={}>".format 

Et measurement_table où je vais avoir l'erreur de conversion:

mea = db_access.get_measurements_for_location(location_id) 

L'erreur: In the URL address, you can see the location_id number i'm trying to convert

Répondre

0

Vous avez une liste. On peut supposer que le premier élément de cette liste est la valeur du bouton radio sélectionné. Vous pouvez obtenir le premier élément d'une liste à l'aide d'indexation de la liste, comme ceci:

location_id = ['14'] 
location_id = int(location_id[0]) 

Si cela ne vous a pas aidé ajoutez ensuite votre code de CGI à votre question car c'est là le problème est vraiment.

+0

N'a pas fonctionné. J'ai eu la même erreur de conversion. Mais j'ai ajouté tout mon code CGI. – dabrams493

+0

Nevermind l'a eu. C'était ça. J'ai mal compris et mis votre solution mal. Merci. – dabrams493

+0

@ dabrams493 Ensuite, montrez votre appréciation en acceptant la réponse et en l'actualisant. hé! –