python - 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)
解决方案
如果您想注册您的用户,您的视图应如下所示
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')
推荐阅读
- c - 额外的字节在 CPIO 生成的文件中填充
- cmd - 将 Lando 添加到 git bash 配置文件
- javascript - svg 图标在项目中的显示方式不同
- java - Spring boot 2.2.0 - 多部分文件上传失败并出现错误
- c# - 错误 CS0234:命名空间“System.Data”VSTS (DevOps) 中不存在类型或命名空间名称“实体”
- python - pandas timedelta 和过滤负值
- angular - Angular 延迟加载模块中的嵌套子级
- c# - 如何在 ASP.NET Razor 页面中的 DropDown 更改上重新加载/调用 OnGet 或 OnPost 方法
- node.js - 如何在 API 调用下生成套接字发出事件
- python - 绘制 Vasicek 模型。只有大小 -1 的数组可以转换为 python 标量