J'utilise actuellement django.contrib.auth.views.password_password_reset_confirm code> Pour modifier le mot de passe d'un utilisateur. Voici comment mes URL apparaissent:
# django.contrib.auth.views
def clean_new_password2(self):
password1 = self.cleaned_data.get('new_password1')
password2 = self.cleaned_data.get('new_password2')
if password1 and password2:
if len(password1) < 8:
raise forms.ValidationError(_("Password must be at least 8 chars."))
if password1 != password2:
raise forms.ValidationError(_("The two password fields didn't match."))
return password2
3 Réponses :
Si je comprends bien correctement, vous modifiez le code Django? Parce que c'est juste ne peut pas être le moyen de le faire. P>
Quelle forme utilisez-vous? Il semble en effet que l'intégré PasswordChangeForm < / a> ne vous laissera pas régler une longueur min_length. P>
Peut-être que vous pourriez utiliser le Password_Change < / a> Affichage et définissez votre propre mot de passe_change_form, qui pourrait hériter de la formule de passe de baseChangerforme à laquelle vous pouvez appliquer supplémentaire Nettoyage . P>
Superbe réponse, j'ai ajouté une autre réponse avec le code que j'ai finalement écrit Stackoverflow.com/a/20678355/340128
J'utilise le plugin Django-Inscription, que j'ai trouvé excellent, mon exemple est basé sur cela. Mais vous pourriez faire une chose très similaire sans cela.
Que Vous devez faire, c'est remplacer la classe d'enregistrement (comme ci-dessous) et pointez votre URLS.py pour l'utiliser au lieu de la formulation d'enregistrement par défaut p> (dans une classe de formulaire, Django sera Recherchez des fonctions qui commencent par L'autre bit important est Pour utiliser le formulaire dans vos urls.py, comme: P> Nettoyer _ code> et terminez par un nom de champ (comme
mot de passe1 code>) pour exécuter lors de la validation du formulaire.) p>
from django.conf.urls.defaults import *
from registration.views import register
from myapp.forms import MinPasswdLenRegistrationForm
urlpatterns = patterns('',
url(r'^register/$', register,
{'form_class': MinPasswdLenRegistrationForm},
name='registration.views.register'),
(r'', include('registration.urls')),
)
Le code que j'ai finalement écrit après la compréhension de la réponse acceptée d'Arthur:
Ceci est la forme héritée: p> dans le urls.py code > Vous pouvez instruire la vue d'utiliser le formulaire personnalisé en spécifiant
set_password_form code>: p>
si len (mot de passe1) <7 code> accepte un mot de passe de longueur 7 (qui n'est pas d'au moins 8)?