首页 > Windows开发 > 详细

restframework框架 一 APIView

时间:2018-07-31 18:34:24      阅读:142      评论:0      收藏:0      [点我收藏+]

 

RESTful:(面向资源架构(ROA:Resource Oriented Architecture))

1. 一切皆资源

 

  restful:
        get 查看
    books ------------>
        post 添加

        get 查看
    book/1/-------------
        delete 删除
        put 更新

没有任何动词 不同的请求代表不同的功能

2.

  GET :从服务器取出资源(一项或多项)
  POST :在服务器新建一个资源
  PUT :在服务器更新资源(客户端提供改变后的完整资源)
  PATCH :在服务器更新资源(客户端提供改变的属性)
  DELETE :从服务器删除资源

  

首先下载 restframework

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple djangorestframework

下载好后 首先在配置里加:

技术分享图片

然后在view里导入

from rest_framework.views import APIView
class Home(APIView):

def get(self,request):
pass


def post(self,requset):
pass

在model先创建个表结构

from django.db import models

# Create your models here.


class Author(models.Model):
    nid = models.AutoField(primary_key=True)
    name=models.CharField( max_length=32)
    age=models.IntegerField()

    # 与AuthorDetail建立一对一的关系
    authorDetail=models.OneToOneField(to="AuthorDetail",on_delete=models.CASCADE)

class AuthorDetail(models.Model):

    nid = models.AutoField(primary_key=True)
    birthday=models.DateField()
    telephone=models.BigIntegerField()
    addr=models.CharField( max_length=64)

class Publish(models.Model):
    nid = models.AutoField(primary_key=True)
    name=models.CharField( max_length=32)
    city=models.CharField( max_length=32)
    email=models.EmailField()


class Book(models.Model):

    nid = models.AutoField(primary_key=True)
    title = models.CharField( max_length=32)
    publishDate=models.DateField()
    price=models.DecimalField(max_digits=5,decimal_places=2)

    # 与Publish建立一对多的关系,外键字段建立在多的一方
    publish=models.ForeignKey(to="Publish",to_field="nid",on_delete=models.CASCADE)
    # 与Author表建立多对多的关系,ManyToManyField可以建在两个模型中的任意一个,自动创建第三张表
    authors=models.ManyToManyField(to=Author,)

创建好表后 添加两条数据

然后创建一个接口

from app01.models import Publish
from django.core.serializers import serialize
from rest_framework.views import APIView

class Home(APIView):

    def get(self,request):
        publish_list = Publish.objects.all()
        ret = serialize("json", publish_list)
        return HttpResponse(ret)


    def post(self,requset):
        pass

下面我们来看一下 APLView的源码 它的执行过程又是如何。

技术分享图片

继承的是我们的View

技术分享图片

因为APLView也有as_view所以我们用它的as_view

技术分享图片

 

restframework框架 一 APIView

原文:https://www.cnblogs.com/yftzw/p/9397009.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!