J'ai une forme, avec un tas de champs, puis j'ai un:Django: après vérification form.is_valid, cleaned_data manque le champ d'image
profile_image=forms.ImageField(required=False)
Le problème Sí que, après la form.is_valid() vérifier,
form.cleaned_data.get('first_name')
par exemple, ne retourne le nom réel, cependant,
form.cleaned_data.get('profile_image')
ne retourne pas anynthing.
Dans l'impression (request.POST) sortie, i get
u'profile_image': [u'02 Portfolio Page.jpg']
mais dans l'impression (form.cleaned_data) i get:
'profile_image': None
Pourquoi le fichier perdu au is_valid vérifier? Que devrais-je faire?
MISE À JOUR:
class NewChickForm(forms.Form):
first_name = forms.CharField()
last_name = forms.CharField()
profile_image=forms.ImageField(required=False)
def do_save(self):
u = Subject(
first_name = self.cleaned_data.get('first_name'),
last_name = self.cleaned_data.get('last_name'),
profile_image = self.cleaned_data.get('profile_image'),
)
print(self.cleaned_data)
u.save()
return u
et
s = Subject()
form = NewChickForm(request.POST) # 1)do i add here `request.FILES` ?
if form.is_valid():
s = form.do_save()
# 2) s.profile_image = form.cleaned_data.get('profile_image')?
Même si je fais # 1) et 2), je reçois encore aucun
Vous aviez raison. Je n'avais pas le multipart. ajoutée. Mais je n'obtiens pas trop la chose obligatoire. L'explication de django semble être très différente de ce que j'ai dans mon code. Pourriez-vous laisser tomber une ligne sur la façon dont je devrais le faire en fonction du nouveau code que j'ai collé dans la mise à jour? ce serait vraiment génial – mgPePe
Les données multi-parties seront placées dans 'request.FILES', donc vous devez le lier au formulaire dans # 1 pour' is_valid' pour valider ce champ. Je ne suis pas sûr de # 2 comme je toujours extrait juste le fichier de 'request.FILES' directement au lieu d'utiliser' clean_data.get (...) 'Avez-vous inspecté' request.FILES' pour voir si vos données sont là ? –
Ici, ce document est probablement une meilleure explication: http://docs.djangoproject.com/fr/dev/topics/http/file-uploads/?from=olddocs –