Django——DRF 登录 注册
首先,在你的应用程序目录中的views.py
文件中编写以下内容:
from rest_framework.decorators import api_view from rest_framework.response import Response from django.contrib.auth import authenticate, login from .serializers import UserSerializer @api_view(['POST']) def login_view(request): email = request.data.get('email') password = request.data.get('password') user = authenticate(email=email, password=password) if user is not None: login(request, user) serializer = UserSerializer(user) return Response(serializer.data) else: return Response({'error': 'Invalid credentials'}, status=400) @api_view(['POST']) def signup_view(request): serializer = UserSerializer(data=request.data) if serializer.is_valid(): user = serializer.save() login(request, user) return Response(serializer.data, status=201) else: return Response(serializer.errors, status=400)
在此示例中,我们使用了DRF的@api_view
装饰器来定义API视图函数。在login_view
函数中,我们通过request.data
获取POST请求中的邮箱和密码,并使用authenticate
和login
函数进行身份验证。在signup_view
函数中,我们使用DRF的序列化器(Serializer)来处理用户数据,并保存新用户。
接下来,在你的应用程序目录中创建一个serializers.py
文件,并编写以下内容:
from rest_framework import serializers from django.contrib.auth import get_user_model User = get_user_model() class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = ['id', 'email', 'password'] extra_kwargs = {'password': {'write_only': True}} def create(self, validated_data): user = User.objects.create_user(**validated_data) return user
在此示例中,我们使用DRF的ModelSerializer
来定义用户序列化器。我们指定了模型(通过get_user_model()
获取用户模型)和要包含的字段列表。通过设置write_only=True
,我们确保不会将密码返回给客户端。
最后,在你的应用程序目录中的urls.py
文件中定义URL路由。以下是一个示例:
from django.urls import path from . import views urlpatterns = [ path('login/', views.login_view, name='login'), path('signup/', views.signup_view, name='signup'), ]
这样就完成了登录和注册接口的开发。你可以使用工具如Postman来测试这些接口。请注意,为了保证接口的安全性,你可能需要添加额外的身份验证和输入验证等功能。