首页 > 解决方案 > UnboundLocalError 异常值:分配前引用的局部变量“first_name”

问题描述

//views.py

从 django.shortcuts 导入渲染,从 .models 重定向导入 insert_user

def index(request):
    return render(request,'backpages/index.html')

def register(request):
    if request.method=="POST":
        first_name=first_name.objects.get(first_name=request.POST['first_name'])


    email=email.objects.get(email=request.POST['email'])
    password=password.objects.get(password=request.POST['password'])


    user=insert_user(first_name=first_name,email=email,password=password)
    user.save()
    user=insert_user.objects.get(first_name=first_name,email=email,password=password)
    print ("user created.")
    return redirect('/')
else:
    return render(request,'backpages/register.html') 

在此处创建您的视图。

模型.py

from django.db import models

from django.contrib.auth.models import AbstractBaseUser, UserManager

class insert_user(AbstractBaseUser):

    first_name=models.CharField(max_length=200)
    email=models.CharField(max_length=200)
    password=models.CharField(max_length=200)

标签: pythondjangomodelmysql-error-1064

解决方案


如果您想注册您的用户,您的视图应如下所示

def register(request):
    if request.method=="POST":
        first_name=request.POST['first_name']
        email=request.POST['email']
        password=request.POST['password']


        user= insert_user.objects.create(
            first_name=first_name,
            email=email)
        user.set_password(password)

        user.save()

        print ("user created.")
        return redirect('/')
     return render(request,'backpages/register.html') 

如果您分配密码 in insert_user.objects_create(,它将以纯文本形式创建密码。而且您将无法使用它登录,因为 django 需要一个散列密码,通过您的 settings.py 中的SECRET_KEY

为用户设置密码时,您应该使用.set_passwort('password123')


推荐阅读