DjangoRestFramework - 视图能够创建一个用户对象,而无需对必填字段进行任何输入
DjangoRestFramework - View is able to create a user object without any input for mandatory fields
我正在使用 Django 1.8 和 Python 3.4.0。我正在使用 DjangoRestFramework。我想创建一个用户对象。根据
django/contrib/auth/models.py
它说
class User(AbstractUser):
"""
Users within the Django authentication system are represented by this model.
Username, password and email are required. Other fields are optional.
"""
现在在我的 serializers.py 文件中,我有:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'password')
在我的 views.py 文件中,我有:
@api_view(['GET', 'POST'])
def user_list(request):
"""
List all users, or create a new user.
"""
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)
在我的 urls.py 我有:
url(r'^users$', 'user_list', name='user_list'),
我运行服务器然后打开终端
curl -X POST localhost:8000/users/ -d "username=firstUser&password=firstPassword"
返回201 created状态码,对象创建成功。由于 "class User" 提到电子邮件字段是必填的,它不应该返回 400 错误请求状态代码吗?
Since the "class User" mentioned that the email field is mandatory
什么电子邮件字段?
你只告诉 Django REST 框架有一个 username
和 password
字段,所以这就是它所期望和验证的。如果您希望 email
字段是必需的,则必须将其包含在序列化程序的 Meta.fields
中。
我正在使用 Django 1.8 和 Python 3.4.0。我正在使用 DjangoRestFramework。我想创建一个用户对象。根据
django/contrib/auth/models.py
它说
class User(AbstractUser):
"""
Users within the Django authentication system are represented by this model.
Username, password and email are required. Other fields are optional.
"""
现在在我的 serializers.py 文件中,我有:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'password')
在我的 views.py 文件中,我有:
@api_view(['GET', 'POST'])
def user_list(request):
"""
List all users, or create a new user.
"""
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)
在我的 urls.py 我有:
url(r'^users$', 'user_list', name='user_list'),
我运行服务器然后打开终端
curl -X POST localhost:8000/users/ -d "username=firstUser&password=firstPassword"
返回201 created状态码,对象创建成功。由于 "class User" 提到电子邮件字段是必填的,它不应该返回 400 错误请求状态代码吗?
Since the "class User" mentioned that the email field is mandatory
什么电子邮件字段?
你只告诉 Django REST 框架有一个 username
和 password
字段,所以这就是它所期望和验证的。如果您希望 email
字段是必需的,则必须将其包含在序列化程序的 Meta.fields
中。