zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    hdu Fibonacci
    hdu 七夕节
    似然和概率密度函数
    独立同分布的理解
    运行21个项目第13章中遇到的问题
    计算ngram距离-python实现【转载】
    python-Pickle【转载】
    pip和conda的区别【转载】
    资源文章【待看】
    错误尝试【待学习】
  • 原文地址:https://www.cnblogs.com/caoyu080202201/p/13254823.html
Copyright © 2011-2022 走看看