我是Django的新手,对处理服务器上的发布请求感到困惑。我想接受以下json格式的发布请求:public LiveData<List<ListEntity>> getLists() {
return repository.getLists(listNumber, searchText);
}
,并使用以下json格式的回复进行回复:
{“username”:”john@doe.com”,”password”:”pass@word1”}
(如果找到用户名和密码组合)
{“status”:”success”,”message”:”user_authed”}
,如果找不到用户名和密码组合
这是我的views.py代码
{“status”:”failure”,”message”:”user_not_found”}
我想知道如何格式化发布功能以接受上述格式的请求,以及如何将回复自定义为已认证。任何帮助将不胜感激
答案 0 :(得分:1)
您要完成的工作称为身份验证。 请提前阅读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)