我尝试在将密码插入数据库之前对密码进行加密。我已经覆盖了保存方法,但我得到了一个" 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('/')
答案 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