我正在使用 Django REST framework 编写 REST API . API 将成为社交移动应用程序的后端。完成教程后,我可以序列化我的所有模型,并且能够创建新资源并更新它们。
我正在使用 AuthToken 进行身份验证。
我的问题是:
一旦我有了 /users
资源,我希望应用程序用户能够注册。那么,拥有像 /register
这样的单独资源更好,还是允许匿名用户 POST 到 /users
一个新资源更好?
此外,关于权限的一些指导会很棒。
最佳答案
Django REST 框架 3 allow在序列化器中覆盖 create
方法:
from rest_framework import serializers
from django.contrib.auth import get_user_model # If used custom user model
UserModel = get_user_model()
class UserSerializer(serializers.ModelSerializer):
password = serializers.CharField(write_only=True)
def create(self, validated_data):
user = UserModel.objects.create_user(
username=validated_data['username'],
password=validated_data['password'],
)
return user
class Meta:
model = UserModel
# Tuple of serialized model fields (see link [2])
fields = ( "id", "username", "password", )
从 ModelSerializer
继承的类的序列化字段必须在 Django Rest Framework 的 Meta
中公开声明 v3.5和最新的。
文件api.py:
from rest_framework import permissions
from rest_framework.generics import CreateAPIView
from django.contrib.auth import get_user_model # If used custom user model
from .serializers import UserSerializer
class CreateUserView(CreateAPIView):
model = get_user_model()
permission_classes = [
permissions.AllowAny # Or anon users can't register
]
serializer_class = UserSerializer
关于django - 如何在 Django REST 框架中注册用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16857450/