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使用記錄(二) -序列化器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章