drf入门

一、web开发模式

  1、前后端混合:后端接口返回的是符合html语法的字符串,可以用模板语法。

  2、前后端分离:后端接口返回的json或xml格式的数据。

  3、api接口:用于前后端交互的url链接,前后端通过统一的规则在此进行数据交换。

二、动态页面/静态页面 

  1、动态页面:需要实时查询数据库,根据查询结果动态渲染出来的页面。

  2、静态页面:无需实时查询数据库,静态页面一经上传每次访问结果相同。

  3、页面静态化:对于一些较为庞大,访问量较大的页面,如一些站点的主页,为了减轻服务器频繁查询数据库的压力,会将所有数据统一生成静态页面上传,若有变化,可以修改成新的静态页面再上传。

三、restful规范

  1、简介:REST全称,Representational State Transfer,意为,表征性状态转移。

  2、restful规范是一种api接口的设计风格,尤其适用于前后端分离的模式,这种风格提倡后端专注提供数据,对外提供数据资源的访问接口即可,所以前端通过url访问api接口这一行为,就是在操作数据资源。

  3、任何一个框架都可以实现符合restful规范的api接口,不仅限于django。

  4、restful十条:

    ①数据安全保障:为提高数据交互的安全性,提倡用https协议进行传输。

    ②api接口特征化:为了让api接口显得一目了然,建议用于api接口的url中包含<api>这一关键字。

    ③多版本共存:更新后的api接口对应的url应包含版本号,并保留之前的url,这样同一种数据保留多个版本的api接口,并有用于区别版本先后的标识。

    ④数据即资源:提倡api接口对应的url使用名词以及复数名词,因为api接口一般用于数据的交互,这些数据就是资源。也有部分使用动词的情况,一般这些动词代表了api接口的核心含义。

    ⑤操作方式取决于请求方式:操作数据的基本方法离不开增删查改,通过请求方式来分别对应。

    ⑥过滤参数:通过在对应的url上附加参数传递给后端以获取查找条件。

    ⑦响应状态码:后端应回应不同的状态码以表示不同的处理结果

      --- 2xx:

        -- 200:常规请求。

        -- 201:创建成功。

      --- 3xx:

        -- 301:永久重定向。

        -- 302:临时重定向。

      --- 4xx:

        -- 403:请求权限错误。

        -- 404:请求路径错误。

        -- 405:请求方法错误。

      --- 5xx:

        -- 500:服务器异常。

    ⑧错误处理:发生错误时,后端应回应错误信息。

    ⑨不同请求方法应返回对应格式的结果:

      --- GET /collection:返回资源对象的列表(数组)。

      --- GET /collection/resource:返回单个资源对象。

      --- POST /collection:返回新生成的资源对象。

      --- PUT /collection/resource:返回完整的资源对象。

      --- PATCH /collection/resource:返回完整的资源对象。

      --- DELETE /collection/resource:返回一个空文档。

    ⑩返回结果最好包含下一步所需资源api接口的url:前端通过这个url可以直接下一步操作。

四、drf的安装与快速使用

  1、drf安装指令:pip install djangorestframework==3.10.3。

  2、快速使用:

# 使用
    1 在setting.py 的app中注册
        INSTALLED_APPS = [
        'rest_framework'
        ]
    2 在models.py中写表模型
        class Book(models.Model):
            nid=models.AutoField(primary_key=True)
            name=models.CharField(max_length=32)
            price=models.DecimalField(max_digits=5,decimal_places=2)
            author=models.CharField(max_length=32)
    3 新建一个序列化类
        from rest_framework.serializers import ModelSerializer
        from app01.models import  Book
        class BookModelSerializer(ModelSerializer):
            class Meta:
                model = Book
                fields = "__all__"
    4 在视图中写视图类
        from rest_framework.viewsets import ModelViewSet
        from .models import Book
        from .ser import BookModelSerializer
        class BooksViewSet(ModelViewSet):
            queryset = Book.objects.all()
            serializer_class = BookModelSerializer
    5 写路由关系
        from app01 import views
        from rest_framework.routers import DefaultRouter
        router = DefaultRouter()  # 可以处理视图的路由器
        router.register('book', views.BooksViewSet)  # 向路由器中注册视图集
          # 将路由器中的所以路由信息追到到django的路由列表中
        urlpatterns = [
            path('admin/', admin.site.urls),
        ]
        # 两个列表相加
        urlpatterns += router.urls
        
    6 启动,在postman中测试即可
View Code

 

原文地址:https://www.cnblogs.com/caoyu080202201/p/13254823.html