Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django和DRF中添加2FA_Python_Django_Reactjs_Redux_Django Rest Framework - Fatal编程技术网

Python 如何在Django和DRF中添加2FA

Python 如何在Django和DRF中添加2FA,python,django,reactjs,redux,django-rest-framework,Python,Django,Reactjs,Redux,Django Rest Framework,我不知道如何将2FA添加到我的django项目和DRF中? 我最终将把这个DRF与react和redux连接起来作为前端 这是我的Django一面: 型号: from django.contrib.auth.models import AbstractUser class User(AbstractUser): def __str__(self): return self.username 我的Django api序列化程序 # Login API class L

我不知道如何将2FA添加到我的django项目和DRF中? 我最终将把这个DRF与react和redux连接起来作为前端

这是我的Django一面:

型号:

from django.contrib.auth.models import AbstractUser


class User(AbstractUser):

    def __str__(self):
        return self.username
我的Django api序列化程序

# Login API
class LoginAPI(generics.GenericAPIView):
    serializer_class = LoginSerializer

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data
        return Response({
            "user": UserSerializer(user, context=self.get_serializer_context()).data,
            "token": AuthToken.objects.create(user)[1]

        })


# Check token and send back what user is associated with that token
class UserAPI(generics.RetrieveAPIView):
    permission_classes = [
        permissions.IsAuthenticated,
    ]

    serializer_class = UserSerializer

    def get_object(self):
        return self.request.user
我的Django URL:

from django.urls import path, include
from knox import views as knox_views
from accounts.api.views import LoginAPI, UserAPI

urlpatterns = [
    path('api/auth', include('knox.urls')),
    path('api/auth/login', LoginAPI.as_view()),
    path('api/auth/user', UserAPI.as_view()),
    path('api/auth/logout', knox_views.LogoutView.as_view(), name='knox_logout'),
我的django观点:

from rest_framework import generics, permissions
from rest_framework.response import Response
from knox.models import AuthToken

from accounts.api.serializers import LoginSerializer, UserSerializer


# Login API
class LoginAPI(generics.GenericAPIView):
    serializer_class = LoginSerializer

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data
        return Response({
            "user": UserSerializer(user, context=self.get_serializer_context()).data,
            "token": AuthToken.objects.create(user)[1]

        })


# Check token and send back what user is associated with that token
class UserAPI(generics.RetrieveAPIView):
    permission_classes = [
        permissions.IsAuthenticated,
    ]

    serializer_class = UserSerializer

    def get_object(self):
        return self.request.user
试模法