Comment puis-je déclencher une ValidationError (ou faire quelque chose de similaire) dans views.py de mon Django?
Je suis en utilisant Django formes. Je suis de la validation dans la couche du modèle:
def clean_title(self):
title = self.cleaned_data['title']
if len(title) < 5:
raise forms.ValidationError("Headline must be more than 5 characters.")
return title
Cependant, il ya certaines choses que j'ai besoin de valider dans le views.py
. Par exemple...la dernière fois que l'utilisateur a posté quelque chose de plus qu'il y a une minute?
Ce genre de choses exige de la demande.de l'utilisateur, les modèles de la couche ne peut pas obtenir. Donc, je dois valider dans la views.py. Comment puis-je faire quelque chose dans le views.py faire exactement la chose comme cela?
raise forms.ValidationError("Headline must be more than 5 characters.")
source d'informationauteur TIMEX
Vous devez vous connecter pour publier un commentaire.
Je pense que gruszczy la réponse est bonne, mais si vous êtes après le générique de validation impliquant les variables que vous pensez ne sont disponibles que dans la vue, voici une alternative: passer dans le vars comme arguments de la forme et de traiter avec eux dans la forme principale de la méthode clean ().
La différence/l'avantage ici est que votre point de vue reste plus simple et toutes les choses liées à la forme du contenu acceptable arriver dans la forme.
par exemple:
Remarque que le fait d'élever un générique
ValidationError
dans leclean()
méthode permettra de mettre l'erreur enmyform.non_field_errors
de sorte que vous aurez à vous assurer que votre modèle contient{{form.non_field_errors}}
si vous êtes manuellement l'affichage de votre formulaireVous n'utilisez pas
ValidationError
de point de vue, comme ceux des exceptions comme pour les formulaires. Plutôt, vous devez rediriger l'utilisateur vers une autre url, qui va lui expliquer, qu'il ne peut pas poster de nouveau bientôt. C'est la bonne façon de gérer ce genre de choses.ValidationError
doit être soulevée à l'intérieur d'unForm
exemple, lorsque les données d'entrée ne valide pas. Ce n'est pas le cas.Vous pouvez utiliser les messages dans les vues:
Documentation: https://docs.djangoproject.com/es/1.9/ref/contrib/messages/