4. api_view和root_api

@api_view(["GET","POST"])
def idcs_list_v2(request,format=None,*args,**kwargs):
    if request.method == "GET":
        queryset = Idc.objects.all()
        serializer = IdcSerializer(queryset,many=True)
        return Response(serializer.data)
    elif request.method=="POST":
        serializer = IdcSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data,status=status.HTTP_201_CREATED)
        return Response(serializer.data,status=status.HTTP_400_BAD_REQUEST)
from rest_framework.response import *
@api_view(["GET","PUT","DELETE"])
def idcs_detail_V2(request,pk,*args,**kwargs):
    try:
        idc = Idc.objects.get(pk=pk)
    except Idc.DoesNotExist:
        return HttpResponse(status=status.HTTP_404_NOT_FOUND)
    
    if request.method == "GET":
        serializer= IdcSerializer(idc)
        return Response(serializer.data) 
        # 这个response是DRF中的,不需要上面那个JsonResponse类了,并且还有对应操作界面
    
    elif request.method == "PUT":
        serializer = IdcSerializer(idc,data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors,status=status.HTTP_404_NOT_FOUND)
    elif request.method=="DELETE":
        idc.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)

from rest_framework.reverse import reverse    
@api_view(["GET"])
def api_root(request,format=None,*args,**kwargs):
    return Response(
        {
        	// idcs-list 是urls中的name, 将name解析成当前对应的请求
            "idcs" : reverse("idcs-list",request=request,format=format)
        }
    )

路由层

### 版本二
from rest_framework.urlpatterns import format_suffix_patterns
urlpatterns = [
   url("^$",views.api_root),
   url("^idcs/$",views.idcs_list_v2,name="idcs-list"),
   url("^idcs/(?P<pk>[0-9]+)/$",views.idcs_detail_V2,name="idc_detail"),
]
urlpatterns = format_suffix_patterns(urlpatterns)

format_suffix_patterns 这个能实现效果:
在这里插入图片描述

在这里插入图片描述

效果如下
api root作用就是给个首页
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值