繁体   English   中英

Django Web 应用程序处理发布请求

[英]Django web application handling post requests

我是 Django 的新手,对处理对我的服务器的 post 请求感到困惑。 我想接受这种 json 格式的 post 请求: {“username”:”john@doe.com”,”password”:”pass@word1”}并用这些 json 格式的回复回复:

{“status”:”success”,”message”:”user_authed”}如果找到用户和密码组合{“status”:”failure”,”message”:”user_not_found”}如果用户和密码组合未找到成立

这是我的 views.py 代码

from django.shortcuts import render

from django.http import HttpResponse
from django.shortcuts import get_object_or_404
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from . models import users
from . serializers import userSerializer


class userList(APIView):

def get(self, request):
    user = users.objects.all()
    serializer = userSerializer(user, many=True)
    return Response(serializer.data)

def post(self, request):
    serializer = userSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我想知道如何格式化 post 函数以接受上述格式的请求,以及如何自定义回复是否通过身份验证。 任何帮助将不胜感激

您尝试完成的操作称为身份验证。 请提前阅读https://www.django-rest-framework.org/api-guide/authentication/

然后根据所学内容编辑您的问题。

希望早日收到你的消息!

#serializers.py
from rest_framework import serializers
UserRequestSerializer(serializers.Serializer)
    username = CharField(required=True, max_length=128)
    password = CharField(required=True, max_length=128)

#views.py
from .serializers import *

UserCheckView(APIView):

    def post(request, *args, **kwargs):
        serializer = UserRequestSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        try:
            user = User.objects.get(username=serializer.validated_data['username'])
            if user.check_password(serializer.validated_data['password']:
                return Response(data={“status”:”success”,”message”:”user_authed”},status=status.HTTP_200_OK)
            return Response(data={“status”:”failure”,”message”:”password_did_not_match”}, status=status.HTTP_400_BAD_REQUEST)
        except User.DoesNotExist:
            return Response(data={“status”:”failure”,”message”:”user_not_found”}, status=status.HTTP_404_NOT_FOUND)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM