python - Django:使用 AbstractBaseUser 编辑配置文件
问题描述
在我的 django 项目中,我使用 AbstractBaseUser 注册一个新用户。我使用 set_password 来定义他的密码,以便对其进行加密。现在我想创建一个用于编辑配置文件的视图。我希望密码能够更改和加密。我已经创建了一个视图,但是当我编辑它时,密码并没有在数据库中加密......这些是我的文件:
models.py
class memberArea(AbstractBaseUser):
username = models.CharField(max_length=255)
email = models.EmailField(max_length=255, unique=True)
phone = models.TextField()
date_joined = models.DateTimeField(verbose_name='date joined', auto_now_add=True)
last_login = models.DateTimeField(verbose_name='last login', auto_now=True)
deliveryAddress = models.TextField()
postalCode = models.CharField(max_length=255)
forget = models.TextField(null=True, blank=True)
city = models.CharField(max_length=255)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username', 'phone', 'deliveryAddress', 'postalCode', 'city']
objects = MyAccountManager()
serializers.py
from django.contrib.auth.hashers import make_password
...
class AccountSerializer(serializers.ModelSerializer):
class Meta:
model = memberArea
fields = ['username', 'email', 'phone', 'password', 'deliveryAddress', 'postalCode', 'city']
extra_kwargs = {
'password': {'write_only': True},
}
def validate_password(self, raw_password):
return make_password(raw_password)
views.py
#Edit account
@api_view(['PUT', ])
def edit_account(request, pk):
try:
account = memberArea.objects.get(pk=pk)
except memberArea.DoesNotExist:
return HttpResponse(status=404)
if request.method == 'PUT':
serializer = AccountSerializer(account, data=request.data)
data = {}
if serializer.is_valid():
serializer.save()
data['response'] = 'Account updated with success !'
return Response(data)
return Response(serializer.errors)
提前感谢您的帮助
解决方案
推荐阅读
- jquery - jqGrid jQuery Hexadecimal Colorpicker 来自虚拟列
- c# - 如何通过Controller连接WebSocket?
- kubernetes - 我什么时候需要在 EKS 中使用多个 Fargate 配置文件?
- react-native - React Native Expo Bare WF 仅在 prod 模式下卡在初始屏幕上(商店中)
- python - ValueError:发现样本数量不一致的输入变量:[6, 80]
- java - 为什么非阻塞算法不能正常工作
- fpdf - FPDF 页面样式和大小
- python - 在 discord.py ratelimit 上做点什么
- c# - 如何为 MongoDB 创建存储库?
- javascript - 需要在我的网页中搜索阿拉伯语文本