Django Rest Framework-注册后返回身份验证令牌 [英] Django Rest Framework - return auth token after registration

查看:139
本文介绍了Django Rest Framework-注册后返回身份验证令牌的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

成功注册用户后,我想在json中返回auth令牌。我该怎么做?

I want to return an auth token in json after successful user registration. How can I do this ?

注册时,请使用以下

seriazilers.py

seriazilers.py

class UserSerializer(ModelSerializer):
    class Meta:
        model = User
        fields = [
            'id',
            'username',
            'password',
            'email',
            ]
        write_only_fields = ('password',)
        read_only_fields = ('id',)

    def create(self, validated_data):
        user = User.objects.create(
            username=validated_data['username'],
        )

        user.set_password(validated_data['password'])
        user.save()

        return user

views.py

class CreateUser(CreateAPIView):
    queryset = Profile.objects.all()
    serializer_class = UserSerializer


推荐答案

可以做到这一点。这是您现有代码上下文中的示例。

The are many ways to do this. Here is example in context of your existing code.

from rest_framework.response import Response
from rest_framework.authtoken.models import Token
from rest_framework import status

class CreateUser(CreateAPIView):
    queryset = Profile.objects.all()
    serializer_class = UserSerializer

    def create(self, request, *args, **kwargs): # <- here i forgot self
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)
        token, created = Token.objects.get_or_create(user=serializer.instance)
        return Response({'token': token.key}, status=status.HTTP_201_CREATED, headers=headers)

这篇关于Django Rest Framework-注册后返回身份验证令牌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆