DRF 学习

一、安装DRF

1、pip install djangorestframework -i https://pypi.douban.com/simple

2、pip install pymysql -i https://pypi.douban.com/simple

二、创建Django项目

1、django-admin startproject drfdemo

三、添加rest_framework应用

1、INSTALLED_APPS = [

...

'rest_framework',

]

四、创建模型操作类

1、创建模型操作类

python 复制代码
class Student(models.Model):
    # 模型字段
    name = models.CharField(max_length=100,verbose_name="姓名")
    sex = models.BooleanField(default=1,verbose_name="性别")
    age = models.IntegerField(verbose_name="年龄")
    class_null = models.CharField(max_length=5,verbose_name="班级编号")
    description = models.TextField(max_length=1000,verbose_name="个性签名")

    class Meta:
        db_table="tb_student"
        verbose_name = "学生"
        verbose_name_plural = verbose_name

2、创建数据库 create database students charset=utf8;

3、执行数据迁移 把app01增加到INSTALL_APPS中

4、在__init__.py中增加pymysql做为数据库驱动

import pymysql

pymysql.version_info = (1, 4, 13, "final", 0)

pymysql.install_as_MySQLdb()

5、在setting.py配置文件中设置mysql的账号密码

python 复制代码
    DATABASES = {
   # 'default': {
   #     'ENGINE': 'django.db.backends.sqlite3',
   #     'NAME': BASE_DIR / 'db.sqlite3',
   # }
    'default':{
        'ENGINE':'django.db.backends.mysql',
        'NAME': "students",
        "HOST": "127.0.0.1",
        "PORT": 3306,
        "USER": "root",
        "PASSWORD": "123456"
    }
}

6、终端命令下执行数据迁移

python manage.py migrate #创建表结构

python manage.py makemigrations app01#让Django知道模型有一些变更 注意是app01 应用名称,不是项目名称

python manage.py migrate app01 #创建表结构 注意是app01 应用名称,不是项目名称

7、在app01中新建serializers.py用于保存应用的序列化器。

创建序列化器类,回头会在试图中被调用 创建一个StudentModelSerializer用于序列化与反序列化。

python 复制代码
    class StudentModelSerializer(serializers.ModelSerializer):
            class Meta:
                    model = Student
                    fields = "__all__"

8、编写视图类

在app01应用的views.py中创建视图StudentViewSet,这是一个视图集合。

python 复制代码
    from django.shortcuts import render
    from rest_framework.viewsets import ModelViewSet
    from .models import Student
    from .serializers import StudentModelSerializer


    # Create your views here.
    class StudentViewSet(ModelViewSet):
            queryset = Student.objects.all()
            serializer_class = StudentModelSerializer

#queryset 指明该视图集在查询数据时使用的查询集

#serializer_class 指明该视图在进行序列化或反序列化时使用的序列化器9、定义路由

新建urls.py 添加路由信息

python 复制代码
    from . import views
    from rest_framework.routers import DefaultRouter

    #路由列表
    urlpatterns = []

    router = DefaultRouter() #可以处理视图的路由
    router.register('student',views.StudentViewSet) #像路由器中注册视图集

    urlpatterns += router.urls  #将路由器中的所有路由追加到django的路由列表中

    把students子应用中的路由文件加载到总路由中
    
    from django.contrib import admin
    from django.conf.urls import url
    from django.urls import path
    from django.urls import include
    from . import  views

    urlpatterns = [
            #path('admin/', admin.site.urls),
            #url(r'^$',views.hello),
            path('',views.hello), #http://127.0.0.1:8000/hello/
            path('print',views.print),  #http://127.0.0.1:8000/print
            path('templates',views.templates),
            path("stu/",include("app01.urls")),
    ]

点击链接127.0.0.1:8000/stu/students获取所有数据

相关推荐
devmoon17 分钟前
在 Polkadot Runtime 中添加多个 Pallet 实例实战指南
java·开发语言·数据库·web3·区块链·波卡
Katecat9966320 分钟前
YOLO11分割算法实现甲状腺超声病灶自动检测与定位_DWR方法应用
python
野犬寒鸦21 分钟前
从零起步学习并发编程 || 第七章:ThreadLocal深层解析及常见问题解决方案
java·服务器·开发语言·jvm·后端·学习
陈桴浮海22 分钟前
【Linux&Ansible】学习笔记合集二
linux·学习·ansible
认真的薛薛27 分钟前
数据库-sql语句
数据库·sql·oracle
爱学英语的程序员37 分钟前
面试官:你了解过哪些数据库?
java·数据库·spring boot·sql·mysql·mybatis
xhbaitxl40 分钟前
算法学习day39-动态规划
学习·算法·动态规划
玩大数据的龙威1 小时前
农经权二轮延包—各种地块示意图
python·arcgis
ZH15455891311 小时前
Flutter for OpenHarmony Python学习助手实战:数据库操作与管理的实现
python·学习·flutter
belldeep1 小时前
python:用 Flask 3 , mistune 2 和 mermaid.min.js 10.9 来实现 Markdown 中 mermaid 图表的渲染
javascript·python·flask