from .models import Pbulisher
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from app001 import serializers
"""列出所有的出版社,或者创建一个新的出版社"""
@api_view(['GET','POST'])#这里面存放的是它被允许的一些请求,如果发送了一个不予许的就会抛出一个405
def publisher_list(request):
if request.method=='GET':
queryset=Pbulisher.objects.all()#先获取到所有的出版社然后调用serializers里面的方法
s=serializers.PublisherSerializer(queryset,many=True)#这个时候把所有的出版社信息都序列化了
#最后return Response
return Response(s.data)
if request.method=='POST':
#创建出版社
s=serializers.PublisherSerializer(data=request.data)#把客户端传过来的数据用序列化生成实例
if s.is_valid():#如果数据没有问题
s.save()
return Response(s.data,status=status.HTTP_201_CREATED)
else:
return Response(s.errors,status=status.HTTP_400_BAD_REQUEST)
"""获取,更新或删除一个出版社实例"""
@api_view(['GET','PUT','DELETE'])
def publisher_detail(request,pk):
try:
publisher=Pbulisher.objects.get(pk=pk)#从数据中找id一致的出版社
except Pbulisher.DoesNotExist: #如果找不到就抛出一个404
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method=='GET':
s=serializers.PublisherSerializer(publisher)
return Response(s.data)
elif request.method=='PUT':
s=serializers.PublisherSerializer(publisher,data=request.data)
if s.is_valid():
s.save()
return Response(s.data)
return Response(s.errors,status=status.HTTP_400_BAD_REQUEST)
elif request.method=='DELETE':
publisher.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
用到@app.view装饰它默认会做一个检测是否登录 因为上写的根本就没有登录所以要测试的话需要借助一个插件httpie
pip install hhtpie
创建一个用户:python manage.py createsuperuser
接着用httpie进行测试:http -a 用户名:密码 http://127.0.0.1:8000/publishers/
rest_framework请求和响应
最新推荐文章于 2021-12-08 10:32:08 发布