rest-framework之url控制

摘要:
自定义路由(原始方法)url(r'^publish/$',views.publish.as_view()),url(r'^publish/(?Pd+)$',视图。PublishDetailView.as_view()),classPublish(models.Model):name=models.CharField(max_length=32)city=models.CharFiel

自定义路由(原始方式)

 url(r'^publish/$', views.Publish.as_view()),
 url(r'^publish/(?P<pk>d+)$', views.PublishDetailView.as_view()),
class Publish(models.Model):
    name = models.CharField(max_length=32)
    city = models.CharField(max_length=32)
from rest_framework.serializers import ModelSerializer
from app01 import models
from rest_framework.views import APIView
from rest_framework.response import Response
# Create your views here.
class PublishSerializers(ModelSerializer):
    class Meta:
        model = models.Publish
        fields="__all__"

class Publish(APIView):
    def get(self,request):
        publish_list=models.Publish.objects.all()
        pb = PublishSerializers(publish_list,many=True)
        return Response(pb.data)


    def post(self,request):
        pb = PublishSerializers(data=request.data)
        if pb.is_valid():
            pb.save()
            return Response(pb.data)
        else:
            return Response(pb.errors)


class PublishDetailView(APIView):
    def get(self,request,pk):
        publish_obj = models.Publish.objects.filter(pk=pk).first()
        pb =PublishSerializers(publish_obj,many=False)
        return Response(pb.data)

    def put(self,request,pk):
        publish_obj = models.Publish.objects.filter(pk=pk).first()
        pb = PublishSerializers(data=request.data,instance=publish_obj)
        if pb.is_valid():
            pb.save()
            return Response(pb.data)

    def delete(self,request,pk):
        models.Publish.objects.filter(pk=pk).delete()
        return Response("")

半自动路由(视图类继承ModelViewSet)

    # 半自动路由
    url(r'^publish/$', views.PublishView.as_view({'get': 'list', 'post': 'create'})),
    url(r'^publish/(?P<pk>d+)/$',views.PublishView.as_view({'get': 'retrieve', 'put': 'update', 'delete': 'destroy'})),
from rest_framework.viewsets import ModelViewSet
class PublishView(ModelViewSet):
    queryset=models.Publish.objects.all()
    serializer_class=PublishSerializers

全自动路由自动生成路由

前提是视图类里面必须继承ModelViewSet

from django.conf.urls import url,include

# SimpleRouter 自动生成两条路由
# DefaultRouter自动生成四条路由
# router=SimpleRouter()
router=DefaultRouter()
# 两个参数,一个是匹配的路由,一个是视图中写的CBV的类 router.register(
'publish',views.PublishView) url(r'',include(router.urls))
from rest_framework.viewsets import ModelViewSet
class PublishView(ModelViewSet):
    queryset=models.Publish.objects.all()
    serializer_class=PublishSerializers

 SimpleRouter下生成的路由rest-framework之url控制第1张

DefaultRouter下生成的路由rest-framework之url控制第2张

路径上加上rest-framework之url控制第3张显示的是json格式的信息

rest-framework之url控制第4张这两种都可以

免责声明:文章转载自《rest-framework之url控制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ubuntu16创建文件夹无root权限创建以Microsoft .NET Remoting为基础的分布式应用架构下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

谈谈市面上无线路由器的性能和芯片

  现在市面上无线路由产品的品牌和价格各种各样,如何才能在乱花丛中不被迷眼呢,其实只要看清了各款产品背后的硬件芯片,就可以有个大概的挑选依据了,信息来自网络,只不过总结到一起,方便自己或网友有需要的时候参考。 无线协议IE802.11家族: 协议 发布年份/日期 Op.标准频宽 实际速度 (标准) 实际速度(最大) 范围(室内) 范围(室外)...

完美的外出上网解决方案随身随地享用你的专有WIFI网络(3G无线路由器+sim卡卡托+3G资费卡)

距离元旦和春节长假越来越近了,相信周围很多朋友肯定是打算趁着长假出去旅旅游。正好前几天跟一个朋友聊到在外面上网不方便的问题。因此我今天专门写一篇Blog来介绍一下我当时去西藏时的上网解决方案,供周围有类似外出需要上网的朋友参考。 正式介绍之前为了便于“小白”朋友的理解,我先介绍几个概念: 3G网络:具体的概念在这里我就不废话了,你只要STFG(Search...

CCF/CSP-201403-4

问题描述   目前在一个很大的平面房间里有 n 个无线路由器,每个无线路由器都固定在某个点上。任何两个无线路由器只要距离不超过 r 就能互相建立网络连接。  除此以外,另有 m 个可以摆放无线路由器的位置。你可以在这些位置中选择至多 k 个增设新的路由器。  你的目标是使得第 1 个路由器和第 2 个路由器之间的网络连接经过尽量少的中转路由器。请问在最优方...

aws 负载均衡ELB访问后端私有子网中的服务(Private subnet)

常见Web系统的网络架构:  这个架构涉及几个问题: 1. 如何将面向公众的负载均衡器连接到具有私有 IP 地址的 EC2 实例 2.在私有实例中如何访问互联网的服务(比如第三方的接口)等 重要的两个概念: 公有子网 如果子网的默认流量路由到互联网网关,则该子网称为公有子网。例如,如果在此子网中启动的实例具有弹性 IP 地址或与之关联的公有 IP 地址,...

2016.7.7 计算机网络复习要点第四章之网际协议IP

1.与IP协议配套使用的还有三个协议: **地址解析协议ARP; **网际控制报文协议ICMP; **网际组管理协议IGMP; 2.虚拟互连网络: **没有一种单一的网络能够适应所有用户的需求; **将网络互连起来要使用一些中间设备: (1)物理层使用的中间设备叫做转发器; (2)数据链路层使用的中间设备叫做网桥或者桥接器; (3)网络层使用的中间设备叫做...

SpringCloud Alibaba实战 -引入服务网关Gateway

https://www.cnblogs.com/three-fighter/p/14971538.html http://javadaily.cn/articles/2020/01/16/1579160378591.html SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通...