如何修复/accounts/register处的UnboundLocalError



我从注册了我的django应用程序。但当我点击提交按钮时,我会收到这个错误:

赋值前引用的局部变量"first_name"请求方式:POST请求URL:http://127.0.0.1:8000/accounts/registerDjango版本:3.1.4异常类型:UnboundLocalError异常值:
分配前引用的本地变量"first_name"异常位置:E:\django\Hello_world\accounts\views.py,第8行,在寄存器中Python可执行文件:C:\Users\Asus\Envs\test\Scripts\Python.exePython版本:3.9.0Python路径:
[E:\django\Hello_world','c:\users\asus\appdata\local\programs\python39\python39.zip','c:\users\asus\appdata\local\programs\python39\DLLs',"c:\users\asus\appdata\local\programs\python39\lib","c:\users\asus\appdata\local\programs\python39",'C:\Users\Asus\Envs\test',"C:\Users\Asus\Envs\test\lib\site packages"]

我的代码是

views.py

def register(request):
if request.method == 'POST':
first_name = request.POST[first_name]
last_name = request.POST[last_name]
username = request.POST[username]
email = request.POST[email]
password1 = request.POST[password1]
password2 = request.POST[password2]
user = User.objects.create_user(username=username, email=email, password=password1, first_name=first_name, last_name=last_name)
user.save();
print('user created successfully')
return redirect('/') 
else:
return render(request, 'register.html')

html文件为:

register.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Registration</title>
</head>
<body>
<form action="register" method="post">

{% csrf_token %}
<input type="text" name = 'first_name' placeholder="First Name"><br>
<input type="text" name = 'last_name' placeholder="Last Name"><br>
<input type="text" name = 'username' placeholder="Username"><br>
<input type="email" name = 'email' placeholder="E-mail"><br>
<input type="password" name = 'password1' placeholder="Password"><br>
<input type="password" name = 'password2' placeholder="Confirm Password"><br>
<input type="submit">
</form>
</body>
</html>

您忘记在字典键周围加引号了。将您的代码更改为:

first_name = request.POST['first_name']
last_name = request.POST['last_name']
username = request.POST['username']
email = request.POST['email']
password1 = request.POST['password1']
password2 = request.POST['password2']

相关内容

最新更新