我正在尝试通过Django表单和邮递员注册新用户。我的代码是
view.py
class AddUser(APIView):
#@login_required(login_url='/users/login/')
def get(self,request):
form = AddForm()
return render(request, 'users/add_user.html', {'form':form})
def post(self,request):
form = AddForm(request.POST or None)
if form.is_valid():
obj = utils()
data = form.save(commit=False)
unhashed = obj.random_pass()
send_mail('Login Password', unhashed, 'Django-admin', [data.email])
hashed = obj.pass_hash(unhashed.encode())
data.password = hashed
print(hashed)
data.save()
return redirect('/users/')
我的模特是
class user_data(AbstractUser):
name = models.CharField(max_length=20, unique=False)
email = models.EmailField(unique=True)
role = models.IntegerField()
password = models.CharField(max_length=128)
但是每当我尝试添加新用户时,都会出现以下错误
UNIQUE constraint failed: users_user_data.username
我读到Here,说在创建时添加instance = request.user是可以的,但是由于我未对以表单形式输入数据的用户进行身份验证,因此出现以下错误:
AnonymousUser' object has no attribute '_meta'
另外,我在某处读到这可能是因为我两次保存数据,但是当commnet out data.save()时,它可以正常工作而不会出错,但不会对数据库进行任何更改,因此这不是由于重复保存数据的。 预先感谢。