Je vois un comportement étrange sur ce code:
images = dict(cover=[],second_row=[],additional_rows=[])
for pic in pictures:
if len(images['cover']) == 0:
images['cover'] = pic.path_thumb_l
Elif len(images['second_row']) < 3:
images['second_row'].append(pic.path_thumb_m)
else:
images['additional_rows'].append(pic.path_thumb_s)
Mon application web2py me donne cette erreur:
if len(images['cover']) == 0: TypeError: object of type 'NoneType' has no len()
Je ne peux pas comprendre ce qui ne va pas. Peut-être un problème de portée?
Vous attribuez quelque chose de nouveau à images['cover']
:
images['cover'] = pic.path_thumb_l
où pic.path_thumb_l
est None
à un moment donné de votre code.
Vous vouliez probablement ajouter à la place:
images['cover'].append(pic.path_thumb_l)
votre problème est que
if len(images['cover']) == 0:
vérifie la LONGUEUR de la valeur des images ['cover'] ce que vous vouliez faire est de vérifier s'il a une valeur.
faites ceci à la place:
if not images['cover']:
La première fois que vous affectez: images['cover'] = pic.path_thumb_l
, Il remplace la valeur de la liste vide initialement stockée dans images['cover']
Par la valeur de pic.path_thumb_l
Qui est None
.
Peut-être que votre code dans cette ligne doit être images['cover'].append(pic.path_thumb_l)