05 drf的安装和简单使用

一 Django Rest_Framework(Django Rest_Framework 简称drf, 他就是django的第三方app)

核心思想: 缩减编写api接口的代码

Django REST framework是一个建立在Django基础之上的Web 应用开发框架,可以快速的开发REST API接口应用。在REST framework中,提供了序列化器Serialzier的定义,可以帮助我们简化序列化与反序列化的过程,不仅如此,还提供丰富的类视图、扩展类、视图集来简化视图的编写工作。REST framework还提供了认证、权限、限流、过滤、分页、接口文档等功能支持。REST framework提供了一个API 的Web可视化界面来方便查看测试接口。

 

 

 

官方文档:https://www.django-rest-framework.org/

github: https://github.com/encode/django-rest-framework/tree/master

特点

  • 提供了定义序列化器Serializer的方法,可以快速根据 Django ORM 或者其它库自动序列化/反序列化;
  • 提供了丰富的类视图、Mixin扩展类,简化视图的编写;
  • 丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要;
  • 多种身份认证和权限认证方式的支持;[jwt]
  • 内置了限流系统;
  • 直观的 API web 界面;
  • 可扩展性,插件丰富

 

DRF是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django环境而无需从新创建。(若没有Django环境,需要先创建环境安装Django)

二 安装DRF(drf最新版本不支持django1.x, 升级django版本为:django2.x)

前提是已经安装了django,建议安装在虚拟环境

pip3 install djangorestframework
# Django Rest_Framework
    -最新版----》django的2.2 以上
    -pip install djangorestframework
    
    
# django 默认使用MysqlDB链接mysql---》使用pymysql来替换
# MysqlDB python中老牌操作mysql模块----》2.x很多
# pymysql 3.x上操作mysql
# 2.2之前是没问题
import pymysql
pymysql.install_as_MySQLdb()   # 猴子补丁---》动态的替换对象
# djagno 2.2之前 ---》直接替换成pymysql没问题
# 2.2以后,如果要替换--->需要修改django源码

# mysqlClient:用起来跟pymysql一模一样---》基于MysqlDB开了个分支---》继续维护--》兼容2.x和3.x
# pip3 install mysqlclient   不需要加任何东西,直接操作mysql
# 看人品---》有的机器装不上(Linux)
http://www.liuqingzheng.top/python/%E5%85%B6%E4%BB%96/01-%E5%90%84%E4%B8%BB%E6%B5%81Linux%E7%B3%BB%E7%BB%9F%E8%A7%A3%E5%86%B3pip%E5%AE%89%E8%A3%85mysqlclient%E6%8A%A5%E9%94%99/

 

 

三 简单使用

3.1 在setting.py 的app中注册,添加rest_framework应用

INSTALLED_APPS = [
        'rest_framework'
]

3.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.3 新建一个序列化类

from rest_framework.serializers import ModelSerializer
from app01.models import  Book
class BookModelSerializer(ModelSerializer):
     class Meta:
          model = Book
          fields = "__all__"

3.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

3.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

3.6 启动,在postman中测试即可

 

 

 

 

 

 

 

 

 

posted @ 2021-12-16 17:01  甜甜de微笑  阅读(183)  评论(0编辑  收藏  举报