django - 如何在 Django REST 框架中注册用户?

标签 django python-2.7 django-models django-rest-framework

我正在使用 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/

相关文章:

django - 如何在 django rest 框架中设置嵌套对象?

python - Django 管理员 : OneToOne Relation as an Inline?

python - 根据其中一个列表元素的值,从现有列表中准备 4 个列表

Django:替代使用 annotate(Count()) 来提高速度

python - 检索数据时显示 "Unable to get repr for <class ' django.db.models.query.QuerySet'>"

python - 实现数据库范围功能的正确方法

python - Django:作为值列表查询一部分的相关模型值列表

python - 了解 django.shortcuts.redirect

python - Scipy imsave 使我的图像变暗

python - 是否有不包含任何库的可移植 Python 2.7 Windows 发行版?