zoukankan      html  css  js  c++  java
  • 04.环境安装与使用

    01.安装djangorestframework

    • DRF框架依赖于Django,需要先安装Django环境,再安装djangorestframework
    pip install djangorestframework==3.11.0        # 安装djangorestframework
    pip install django-filter==2.3.0             # 安装过滤器
    • 创建django环境
    # ① 创建一个名为django2.2的虚拟环境
    mkvirtualenv -p python django2.2
    
    # ② 进入django2.2虚拟环境
    workon django2.2
    
    # ③ 安装Django环境
    pip install Django==2.2.5

    02.DRF配置

    2.1 创建一个测试项目

     

    (django2.2) C:UsersLenovo>  cd C:	mp
    (django2.2) C:	mp>  django-admin startproject drf_demo
    (django2.2) C:	mpdrf_demo>  python manage.py startapp book

     

    2.2 DRF应用注册

     

    • setting.py中注册djangorestframework

     

    INSTALLED_APPS = [
        'rest_framework',             # 注册 djangorestframework
        'book.apps.BookConfig',         # 注册刚刚创建的APP:book
    ]

     

    2.3 路由分发

     

    • drf_demo/urls.py

     

    from django.contrib import admin
    from django.urls import path,include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('book/', include(('book.urls', 'book'), namespace='book')),
    ]

     

    2.4 定义模型

     

    from django.db import models
    
    #定义图书模型类BookInfo
    class BookInfo(models.Model):
        btitle = models.CharField(max_length=20, verbose_name='名称')
        bpub_date = models.DateField(verbose_name='发布日期')
        bread = models.IntegerField(default=0, verbose_name='阅读量')
        bcomment = models.IntegerField(default=0, verbose_name='评论量')
        is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')
    
        class Meta:
            db_table = 'tb_books'  # 指明数据库表名
            verbose_name = '图书'  # 在admin站点中显示的名称
            verbose_name_plural = verbose_name  # 显示的复数名称
    
        def __str__(self):
            """定义每个数据对象的显示信息"""
            return self.btitle

     

    • 创建表

     

    (django2.2) C:	mpdrf_demo>   python manage.py makemigrations
    (django2.2) C:	mpdrf_demo>   python manage.py migrate

     

    03.DRF框架功能演示

     3.1 步骤1:创建序列化器类

     

    • 在 book 应用中新建 serializers.py 用于保存所要创建的序列化器类。

     

    from rest_framework import serializers
    from book.models import BookInfo
    
    class BookInfoSerializer(serializers.ModelSerializer):
        """图书序列化器类"""
        class Meta:
            model = BookInfo
            fields = '__all__'

     

    小知识:

     

    model:指定该序列化器类所对应的模型类
    fields:指定依据模型类的哪些字段生成对应序列化器类的字段,__all__代表所有

     

    3.2 步骤2:编写视图

     

    • book/views.py

     

    from rest_framework.viewsets import ModelViewSet
    from book.serializers import BookInfoSerializer
    from book.models import BookInfo
    
    class BookInfoViewSet(ModelViewSet):
        """视图集"""
        queryset = BookInfo.objects.all()
        serializer_class = BookInfoSerializer

     

    小知识:

     

    • queryset:指定视图在进行数据查询时所使用的查询集
    • serializer_class:指定视图在进行序列化或反序列化时所使用的序列化器类

     


    3.3 步骤3:定义路由

     

    • book/urls.py

     

    from django.urls import re_path
    from book import views
    
    urlpatterns = [
    
    ]
    
    # 路由Router
    from rest_framework.routers import DefaultRouter
    
    router = DefaultRouter()
    router.register('books', views.BookInfoViewSet, basename='books')
    urlpatterns += router.urls

     

    • 小知识:什么是路由Router?

    • 答:动态生成视图集中的处理方法的url配置项

     

    3.4 步骤四:测试接口

     

     

    4.1 测试获取所有图书接口

     

    http://127.0.0.1:8000/book/book/

     

    • 返回结果

     

    {
        "code": 0,
        "msg": "success",
        "books": [
            {
                "id": 1,
                "btitle": "西游记",
                "bpub_date": "2020-08-11",
                "bread": 1234,
                "bcomment": 779
            },
            {
                "id": 2,
                "btitle": "红楼梦",
                "bpub_date": "2020-09-19",
                "bread": 123,
                "bcomment": 5555
            },
            {
                "id": 3,
                "btitle": "水浒传",
                "bpub_date": "2020-02-12",
                "bread": 100,
                "bcomment": 0
            }
        ]
    }

     

    4.2 测试创建图书接口

    4.3 测试修改图书接口

    http://127.0.0.1:8000/book/book/1/

    4.4 测试删除数据接口

    http://127.0.0.1:8000/book/book/1/
  • 相关阅读:
    Eclipse中的快捷键
    xml文件头文件生成策略以及导入约束条件
    HTTP协议状态代码和错误状态含义的解释
    水了一个前端面试 记下问的东西
    整理的一些PHP面试题目
    Magic Index 寻找数组中A[i]=i的位置(原题转自微信号待字闺中)
    【经典算法】寻找最长01字串(转自待字闺中)
    PHP中不用第三个变量交换两个变量的值
    已知一个数组a[N]来构造数组b[N]的有趣算法题
    MySQL安装后默认自带数据库的作用
  • 原文地址:https://www.cnblogs.com/xiaoxiamiaichiyu/p/14789307.html
Copyright © 2011-2022 走看看