注册期间未实现错误

时间:2014-07-28 20:23:59

标签: django forms registration

我尝试在将密码插入数据库之前对密码进行加密。我已经覆盖了保存方法,但我得到了一个" NotImplementedError"。我做错了什么?

forms.py

from django import forms
from users.models import User

class UserRegisterForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput())

    def save(self, user):
        user.set_password(self.cleaned_data['password'])
        user.save()

    class Meta:
        model = User
        fields = ('username', 'email', 'password')

views.py

def user_register(request):
    if request.user.is_anonymous():
        if request.method == 'POST':
            form = UserRegisterForm(request.POST)
            if form.is_valid():
                form.save(request.user)
                return HttpResponse('User created succcessfully.')
        else:
            form = UserRegisterForm()

        context = {}
        context.update(csrf(request))
        context['form'] = form
        return render_to_response('/', context)
    else:
        return HttpResponseRedirect('/')

2 个答案:

答案 0 :(得分:1)

它应该看起来像这样:

def save(self):
    user = super(UserRegisterForm, self).save(commit=False)
    user.set_password(self.cleaned_data['password'])
    user.save()
    return user

据我所知,Django有一个内置的用户注册视图,所以不需要自己编写(除了学习)。

答案 1 :(得分:0)

我认为您的导入使用的是默认视图,而不是已实现的后端视图。

from registration.backends.hmac.views import RegistrationView

而不是registration.views导入RegistrationView