je me suis écrit un formulaire:Django modèle de formulaire erreurs
class Autopoweroff_Form(forms.Form):
autopoweroff_groups = forms.CharField(required=True)
autopoweroff_groups_hosts = forms.CharField(required=True)
autopoweroff_groups_start = forms.CharField(required=True)
autopoweroff_groups_end = forms.CharField(required=True)
autopoweroff_groups_startup_delay = forms.CharField(required=True)
autopoweroff_groups_idle_time = forms.CharField(required=True)
Maintenant, je sais que je ne devrais pas mettre reuqired = True explicitement, mais pour le supporter maintenant s'il vous plaît. De toute façon, appuyons sur.
Maintenant que je déteste faire la validation et ainsi de suite dans l'opinion que je viens de définir une fonction de mise à jour pour cette forme:
def update(self, data):
if not self.is_bound and data is not None:
raise Exception()
if self.is_valid():
curr_group = self.cleaned_data['autopoweroff_groups']
...
puis à mon avis appeler comme ceci:
if request.method == 'POST':
form = Autopoweroff_Form(data=request.POST)
form.update(data=request.POST)
return HttpResponseRedirect('/admin/thin/create_autopoweroff')
else:
form = Autopoweroff_Form()
...
Maintenant, le problème est que si je ne tape rien dans le formulaire, le formulaire est retourné tel quel sans afficher les erreurs comme il le devrait. Je sais aussi qu'il ne fera pas quoi que ce soit parce que:
https://docs.djangoproject.com/en/1.3/ref/forms/validation/
En fait, Django essuiera actuellement complètement le dictionnaire cleaned_data s'il y a des erreurs dans la forme. Cependant, ce comportement peut changer dans le futur, donc ce n'est pas une mauvaise idée de nettoyer après vous en premier lieu.
si je tente:
def update(self, data):
if not self.is_bound and data is not None:
raise Exception()
if self.is_valid():
curr_group = self.cleaned_data['autopoweroff_groups']
...
else:
print self.errors
Je reçois les erreurs que je l'aurais aimé voir dans le modèle. Je aussi déjà essayé:
def clean_autopoweroff_groups(self):
autopoweoff_groups = self.cleaned_data.get('autopoweroff_groups', "")
if autopoweoff_groups == '':
print "Validation Error"
raise forms.ValidationError('Please Enter A Name')
return autopoweroff_groups
Qu'est-ce que exactement je fais mal?
MISE À JOUR: à mon avis:
if request.method == 'POST':
form = Autopoweroff_Form(data=request.POST)
if form.is_valid():
form.update(data=request.POST)
return HttpResponseRedirect('/admin/thin/create_autopoweroff')
else:
form = Autopoweroff_Form()
et ma forme enlever si self.is_valid()
Merci beaucoup –