Django:创建新的用户帐户

时间:2016-01-20 18:57:27

标签: python django

我在创建新帐户然后登录时遇到了一些问题。我输入了所有凭据(first_name,last_name,用户名,密码),然后选择"创建新帐户"和它成功地将我重定向回登录页面。但是,当我尝试使用此新帐户登录时,它表示我的用户名不存在。

问题很可能发生在我的views.py文件中:

def create_account(request):
    if request.method == 'POST':
        new_user = User(username = request.POST["username"], 
                        password = request.POST["password"])
        new_user.save()
        Student.objects.create(user=new_user, 
                               first_name=str(request.POST.get("first_name")),
                               last_name=str(request.POST.get("last_name")))
        new_user.is_active = True
        return redirect('../')
    else:
        return render(request, 'polls/create_account.html')

如果您需要更多代码或信息,请告诉我们。谢谢!

2 个答案:

答案 0 :(得分:4)

密码字段需要加密。如果要设置密码,则需要使用将处理加密的set_password()方法。

        new_user = User(username = request.POST["username"])
        new_user.set_password(request.POST["password"])
        new_user.save()

答案 1 :(得分:0)

如果您使用form {/ 1>} cleaned_data工作,这是另一种选择

def create_account(self, request):
    if request.method == 'POST':
        form  = RegisterForm(request.POST) #registration form
        if form.is_valid():
            cd              = form.cleaned_data
            username        = cd['username']
            password        = cd['password']

            new_user = User.objects.create_user(
                            username = cd['username'],
                            password = cd['password']
                        )
            new_user.save()

            #... do stuff