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中测试即可