DRF使用记录(一) - 初体验

DRF使用记录(一) - 初体验

drf(Django REST framework)

在这里插入图片描述

下面简单体验一下drf

需要的包
django
djangorestframework
pymysql
创建django项目

django-admin startproject drf_demo

settings.pyINSTALLED_APPS中添加’rest_framework’。

INSTALLED_APPS = [
    ...
    'rest_framework',
]
创建一个user应用

python manage.py startapp user

user子应用添加到INSTALL_APPS中

INSTALLED_APPS = [
    ...
    'rest_framework',
    'user',
]

drf_demo__init__中设置pymysql为数据库驱动

import pymysql

pymysql.install_as_MySQLdb()

settings.py中数据库相关配置

DATABASES = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    # },
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "drf_demo",
        "HOST": "127.0.0.1",
        "PORT": 3306,
        "USER": "root",
        "PASSWORD":"123456",
    },
}
创建模型操作类
from django.db import models

# Create your models here.

class User(models.Model):
    # 模型字段
    name = models.CharField(max_length=10, verbose_name="姓名")
    sex = models.BooleanField(default=1, verbose_name="性别")
    age = models.IntegerField(verbose_name="年龄")
    phone = models.CharField(max_length=20, null=True, verbose_name="电话")
    addr = models.CharField(max_length=100,null=True,verbose_name="地址")

    class Meta:
        db_table = "tb_user"
        verbose_name = "用户"
        verbose_name_plural = verbose_name

创建数据库

create database drf_demo default charset=utf8;

模型迁移生成数据表格

python manage.py makemigrations

python manage.py migrate

创建序列化器

user应用目录中新建serializers.py用于保存该应用的序列化器。

创建一个UserModelSerializer用于序列化与反序列化。

from rest_framework import serializers
from user.models import User


# 创建序列化器类,视图中被调用
class UserModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = "__all__"
编写视图

user应用中的views.py

from rest_framework.viewsets import ModelViewSet
from .models import User
from .serializers import UserModelSerializer


class UserViewSet(ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserModelSerializer
  • queryset 指明该视图集在查询数据时使用的查询集
  • serializer_class 指明该视图在进行序列化或反序列化时使用的序列化器
定义路由

user应用中创建一个urls.py

from . import views
from rest_framework.routers import DefaultRouter

# 路由列表
urlpatterns = []

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

urlpatterns += router.urls  # 将路由器中的所以路由信息追到到django的路由列表中
  • 总路由配置def_demo中的urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('user/', include('user.urls'))
]
运行测试

python manage.py runserver

  • 在浏览器中输入网址127.0.0.1:8000/user,可以看到DRF提供的API Web浏览页面:

在这里插入图片描述

  • 点击链接127.0.0.1:8000/user/users 可以访问获取所有数据的接口,呈现如下页面:
  • 目前数据库暂无数据,可以用下面提供的post请求添加用户

在这里插入图片描述

  • 随便创建的

在这里插入图片描述

  • 在浏览器中输入网址127.0.0.1:8000/user/users/3/,可以访问获取单一学生信息的接口(id为3的用户),呈现如下页面:

在这里插入图片描述

  • 下面的PUT请求可以更新id为3的user信息
  • 上面DELETE请求可以删除id为3的user信息

drf使用记录(二) -序列化器

发布了53 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42874994/article/details/103127766