If you're using the User model from contrib.auth, you can simply use 
User.objects.create_user(username, email=None, password=password). This 
will create a new User object, and then call set_password()

# forms.py
class RegistrationForm(form.Form):
    username = forms.CharField()
    password = forms.CharField(widget=PasswordInput)

# views.py
def register(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            # UserManager.create_user() is a convenience method for 
creating a new user, and calling user.set_password()
            user = User.objects.create_user(form.cleaned_data['username''], 
password=form.cleaned_data['password'])
    else:
        form = RegistrationForm()
    return render(request, 'your_template.html', {'form': form})

If you're not using Django's User model, you could use one of the password 
hashers from contrib.auth.hashers to create the hashed version of the 
user's password. Something like:


class MyUser(models.Model):
    username = models.CharField(...)
    password = models.CharField(max_length=128)

# views.py

from django.contrib.auth.hashers import PBKDF2PasswordHasher as hasher

def register(request):
    ...
    user = MyUser.objects.create(username=form.cleaned_data['username'], 
commit=False)
    salt = hasher.salt()
    user.password = hasher.encode(form.cleaned_data['password'], salt)
    user.save()


Or better yet, move the user creation logic into a manager, similar to the 
design of UserManager:

class MyUserManager(models.Manager):
    def create_user(self, username, password):
        user = self.model.create(username, commit=False)
        salt = hasher.salt()
        user.password = hasher.encode(password, salt)
        return user

class MyUser(models.Model):
    ...
    objects = MyUserManager()

With that, you can do user = MyUser.objects.create_user(username, password).

Looking at the source code for 
contrib.auth.models<https://github.com/django/django/blob/master/django/contrib/auth/models.py>and
 
contrib.auth.hashers<https://github.com/django/django/blob/master/django/contrib/auth/hashers.py>may
 prove helpful.


If you have existing password data that you need to convert to a hashed 
format, you might consider using a South data migration. Conveniently, the 
tutorial on data migrations uses this use case as an example: 
http://south.readthedocs.org/en/latest/tutorial/part3.html#data-migrations.

(Consider all code to be untested pseudo-code)

On Saturday, 28 July 2012 22:14:52 UTC-4, Sajja1260 wrote:
>
> hi every one,
>                   i created one external registration form.. all are 
> working good, but when we open the admin sit it showing the password as 
> plain text. how to convert the password into hash formate and save into 
> database.. can any one suggest for the abovt one................
>
>
> --
> Thanks in advance 
> yaswanth
>
>  

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/_q7uosZ0VSUJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to