添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
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来测试这些接口。请注意,为了保证接口的安全性,你可能需要添加额外的身份验证和输入验证等功能。