- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我想注册一个用户(我正在使用位于 django.contrib.auth.models 中的用户模型)。假设这是我的 serializers.py:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'password', 'email', )
以下 View 之间有什么区别,在创建用户时推荐使用哪个?
View A:
def createUser(request):
if request.method == 'POST':
serializer = UserSerializer(data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
View B:
def createUser(request):
serializer = UserSerializer(data=request.DATA)
if serializer.is_valid():
user = User.objects.create_user(
email = serializer.init_data['email'],
username = serializer.init_data['username'],
password = serializer.init_data['password'],
)
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
最佳答案
这些都不是完美的。但观点 A 看起来很有前途。
User
的创建不是简单的User.save
,而是您必须调用User.create_user
方法。User.create_user
创建用户的正确方法,但是, View 包含一个逻辑,实际上应该是抽象> 在 Serializer.save()
方法中。要解决这个问题,您必须更改 Serializer.save()
方法的行为。看着 documentation , Serializer.save()
,将调用 Serializer.create()
或 Serializer.update()
。
总而言之,我们必须覆盖 Serializer.create()
来创建用户并使用View A。
# File: serializers.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
def create(self, validated_data):
user = User.objects.create_user(
email = validated_data['email'],
username = validated_data['username'],
password = validated_data['password'],
)
return user
关于DjangoRestFramework - 注册用户 : difference between UserSerializer. save() 和 User.objects.create_user()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30085996/
我目前正在使用Rails 6.0构建仅Rails API的应用程序。我将fast_jsonapi用于Ruby对象的JSON:API序列化。目前,我仅创建了UsersController。 我有一个具有
我正在尝试为新用户的创建 API 处理程序添加一些功能。我有一个关联的 UserProfile 表,我想将新创建的用户添加到其中,并添加 URL 参数的值。 POST api 调用如下所示: .../
假设我想注册一个用户(我正在使用位于 django.contrib.auth.models 中的用户模型)。假设这是我的 serializers.py: class UserSerializer(se
假设我想注册一个用户(我正在使用位于 django.contrib.auth.models 中的用户模型)。假设这是我的 serializers.py: class UserSerializer(se
我正在尝试根据 this 在 Django Rest Framework 上构建休息服务教程。 我在尝试运行时遵循了所有步骤 python manage.py createsuperuser 出现以下
关闭。 这个问题是 not reproducible or was caused by typos 。它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能在这里出现,
我是一名优秀的程序员,十分优秀!