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
N'a pas fonctionné. J'ai eu la même erreur de conversion. Mais j'ai ajouté tout mon code CGI. – dabrams493
Nevermind l'a eu. C'était ça. J'ai mal compris et mis votre solution mal. Merci. – dabrams493
@ dabrams493 Ensuite, montrez votre appréciation en acceptant la réponse et en l'actualisant. hé! –