django - 赋值前引用的局部变量“password1”
问题描述
所以我一直在关注有关自定义用户模型(AbstractBaseUser)的 Django 文档示例。但是当我从管理站点创建用户时,它开始给我这个错误“分配前引用的局部变量'password1'”下面我已经包含了admin.py
from django.contrib import admin
from django import forms
from django.contrib.auth.models import Group
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.forms import ReadOnlyPasswordHashField
class UserCreationForm(forms.ModelForm):
password1 = forms.CharField(label= 'Password' , widget =
forms.PasswordInput)
password2 = forms.CharField(label = 'Password Confirmation', widget =
forms.PasswordInput)
class Meta:
model = CustomUser
#with my added feilds in AbstractBaseUser
fields = ('email','first_name','last_name', 'Mobile',
'Aadhar_Card', 'Address','is_supervisor','is_employee','is_driver')
def clean_password2(self):
password1 = self.cleaned_data.get(password1)
password2 = self.cleaned_data.get(password2)
if password1 and password2 and password1 != password2:
raise forms.ValidationError("Passwords Dont Match")
return password2
def save(self, commit=True):
user = super().save(commit=False)
user.set_password(self.cleaned_data["password1"])
if commit:
user.save()
return user
解决方案
您的clean_password2
方法确实引用了未定义的变量。您需要使用字符串:
password1 = self.cleaned_data.get("password1")
password2 = self.cleaned_data.get("password2")
推荐阅读
- php - Laravel 声明并查找复合键
- laravel - Ag-grid - 数据未在 laravel 视图中加载
- javascript - 无法读取未定义的属性“组件”
- firebase - Vuex 和 firebase 监听器
- jquery - 将屏幕上的 csv 文本转换为表格
- go - 在 Go 源代码中定位“read tcp”错误
- reactjs - react-vega - 获取点击事件的数据(为点击事件添加事件监听器)
- python - 有没有办法将函数作为属性调用(`foo.function()` --> `foo.attribute`)?
- javascript - 流已接收但未在视频元素 html 中显示,仅用于多连接
- docker - Docker 安装 - 启用虚拟化的问题