0
votes

Comment créer un message d'erreur personnalisé dans le formulaire de connexion Django?

Je fais une page de connexion de mon application Django. Pour le moment, si je saisis le mauvais nom d'utilisateur ou mot de passe, le message d'erreur suivant apparaît:

erreur. P>

Y a-t-il une façon de personnaliser ce message pour vous débarrasser des "___all____" et des points de balle? Peut-être juste dire "Veuillez entrer un nom d'utilisateur et un mot de passe corrects. Notez que les deux champs peuvent être sensibles à la casse."? P>

Une version simplifiée de mon code est ci-dessous: p>

vues.py : p> xxx pré>

html: p> xxx pré>

formes.py: p> xxx pré> URLS.PY P>

url(r'^login/$', auth_views.login, name='login', kwargs={"authentication_form":CustomAuthForm}),


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser la validation de formulaire pour introduire une méthode personnalisée. Veuillez vous reporter à https://docs.djangoproject.com/fr/2.1/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-acher-Auch


2 commentaires

Comment puis-je implémenter spécifiquement ceci pour une forme de connexion?


en utilisant une méthode propre sur votre classe de formulaire.



6
votes

Changer le message d'erreur invalid_login dans votre classe de formulaire.

class CustomAuthForm(AuthenticationForm):
    def __init__(self, *args, **kwargs):
        self.error_messages['invalid_login'] = 'Custom error'
        super().__init__(*args, **kwargs)


5 commentaires

Cela fonctionne bien, merci! Le seul problème est que mon message d'erreur apparaît toujours dans Bullet Points. Je dois changer l'affichage de {{form.errors}} dans mon HTML pour afficher le message sans points de balle. Savez-vous comment je pourrais faire cette marxine?


{{FORM.Errors}} est probablement un dictionnaire afin que vous puissiez être capable de le déplacer dans un modèle. {% pour la clé, msg in form2errors.items%} {{key}} {{msg}} {% Endfor%}


Ah! Cela supprime la première balle, mais il affiche toujours le sous-message "Erreur personnalisée" comme point de balle


J'ajoute dans la nouvelle capture d'écran à ma question


J'ai trouvé une réponse alternative plus simple à mettre en œuvre et n'entraîne pas de points de balle et de dictionnaire pour les boucles afin que je ne vais donc pas accepter votre réponse. J'ai voté comme une réponse alternative pour que quelqu'un puisse essayer s'il convient à leurs besoins spécifiques.



0
votes

Après avoir mis en œuvre les marxines de réponse, j'avais toujours des difficultés à éliminer les points de balle de mon message personnalisé. J'ai trouvé que, en modifiant simplement mon modèle pour inclure le code suivant, je pourrais personnaliser mon message d'erreur sans rien modifier dans mes formulaires.py. Le reste de mon code est identique au code donné dans la question mais j'ai ajouté ceci: xxx pré>

alors maintenant mon HTML ressemble à ceci: p>

<form class="log_in_form" action="{% url 'inventory_management_app:login' %}" method="post">
  <p>

  {% csrf_token %}

  {{ form.username }}
  </p>

  <br>

  <p>
  {{ form.password }}
  <br>
  <p>
  </p>
  <br>

  {% if form.errors %}
      <p>username or password not correct</p>
  {% endif %}

  </p>
  <p>
  <br><br>
  <input id="search-button" class="btn btn-dark" type="submit" value="Login">
  </form>


0 commentaires