Django Password Generator Django Password Generator django django

Django Password Generator


You can also use the built in function make_random_password

for user in new_users:    password = User.objects.make_random_password()    user.set_password(password)    user.save(update_fields=['password'])    # email/print password


Also you can use from django.utils.crypto import get_random_string out of auth module, it accepts keyword arguments length and allowed_chars as well.


If you need only a Django`s solutions, then try next:

For generate a normal password try use BaseUserManager.

In [341]: from django.contrib.auth.base_user import BaseUserManager# simple password, it length is 10, and it contains ascii letters and digitsIn [344]: BaseUserManager().make_random_password()Out[344]: 'aYMX5Wk7Cu'In [345]: BaseUserManager().make_random_password()Out[345]: 'rM7759hw96'In [346]: BaseUserManager().make_random_password()Out[346]: 'EkbZxEXyAm'# passed length of a passwordIn [347]: BaseUserManager().make_random_password(45)Out[347]: 'dtM9vhSBL9WSFeEdPqj8jVPMH9ytsjPXrkaHUNUQu4zVH'In [348]: BaseUserManager().make_random_password(45)Out[348]: 'jypVaXuw9Uw8mD4CXtEhtj2E4DVYx23YTMwy8jGTKsreR'# passed length of a password and symbols for choiceIn [349]: BaseUserManager().make_random_password(45, 'abcdf')Out[349]: 'daacbfabfccfdbdddbbcddcfcfbfcdabbaccbfcadbccd'In [351]: import string# password contains only digitsIn [352]: BaseUserManager().make_random_password(50, string.digits)Out[352]: '00526693878168774026398080457185060971935025500935'# password contains only ascii symbols in lowercaseIn [353]: BaseUserManager().make_random_password(50, string.ascii_lowercase)Out[353]: 'nvftisuezofnashdhlalfmscnmqtvigwjpfwsyycsefekytmar'# password contains only ascii symbols in uppercaseIn [354]: BaseUserManager().make_random_password(50, string.ascii_uppercase)Out[354]: 'APKSUHHHTAAJCFEUONIXWWAKJGXIBHTQDZBTSYFTPDFOSRYEQR'

If you need strong and power password, then try built-in "hashers" in the Django

In [355]: from django.contrib.auth.hashers import make_passwordIn [357]: make_password('')Out[357]: 'pbkdf2_sha256$30000$JuKXdW3shCjL$PsPJX7Zale5JUBkWpIJI/+QlsuVWhz9Q+GQWVtTpQ/Y='In [358]: make_password('text')Out[358]: 'pbkdf2_sha256$30000$lSv8kQ39BHE7$KQC5hRhuphYBXmBrXZBJGC+nxygfNWTDf8zQf/NNgY8='In [360]: make_password('text', salt=['simething'])Out[360]: "pbkdf2_sha256$30000$['simething']$D+1vJQx9W2/c9sIz/J+7iEz4d4KFPg/R+0S87n/RKR4="In [361]: make_password('text', salt=['something'])Out[361]: "pbkdf2_sha256$30000$['something']$NIcmOkEyg6mnH5Ljt+KvI2LVgZWg6sXS6Rh865rbhSc="

Notes:

  1. Used Django 1.10 and Python 3.4