2017-03-17 3 views
0

Comment puis-je afficher un message lors de l'utilisation de la classe FormView lorsque le formulaire n'est pas valide? Je pourrais montrer le message dans la fonction form_valid mais aucune idée sur form_invalid car j'utilise self.get_context_data.Afficher les messages django à l'intérieur de form_invalid de FormView

C'est ce que je l'ai fait pour montrer un message lorsque le formulaire est valide

def form_valid(self, form): 
    messages.success(self.request, '{0} added successfully'.format(name)) 
    return HttpResponseRedirect('/') 

Comment puis-je utiliser un message ici?

def form_invalid(self, form): 
    return self.render_to_response(self.get_context_data(form=form)) 
+0

oui vous pouvez ... vous pouvez voir ceci [exemple] (https://docs.djangoproject.com/fr/dev/topics/class-based-views/generic-editing/#ajax-example) –

+0

i Voulez-vous afficher le message dans le modèle comme "vous avez déjà posté" au lieu d'erreurs de formulaire. – Serenity

Répondre

0

Peut-être comme celui-ci;

def form_invalid(self, form): 
    name = 'john' 
    messages.warning(self.request, '{0} error'.format(name)) 

    return self.render_to_response(
     self.get_context_data(request=self.request, form=form)) 

Explication:

messages.warning(self.request, '{0} error'.format(name)) mis avant self.render_to_response(**kwargs), pourquoi? ceci pour mettre à jour votre self.request avec votre message.

et self.render_to_response(**kwargs) utilise les paramètres **kwargs. un pour les champs form et request. voir ceci docs.

+0

oui cela a fonctionné. Pouvez-vous s'il vous plaît me nettoyer pourquoi utiliser request = self.request dans get_context_data travaillé? Est-ce parce que vous avez demandé une demande d'auto-évaluation dans messages.warning? – Serenity

+0

J'ai marqué votre réponse comme résolue. Pouvez-vous également expliquer ma question ci-dessus dans la réponse? – Serenity

+0

voir mes mises à jour ... –