DRF二 ------- Django REST framework的環境配置 和 簡單使用


Django REST framework框架是一個用於構建Web API的強大而又靈活的工具. 通常簡稱爲DRF框架 或 REST framework框架.

特點

  • 提供了定義序列化器serializer的方法,可以快速根據Django ORM或者其他庫自動序列化/反序列化;
  • 提供了豐富的類視圖、Mixin擴展類、簡化視圖的編寫;
  • 豐富的定製層級: 函數視圖、類視圖、視圖集合到自動生成API,滿足各種需求;
  • 多中身份認證和權限認證方式的支持;
  • 內置了限流系統;
  • 直觀的API web界面;
  • 可擴展性, 插件豐富

那什麼叫序列化和反序列化呢?

序列化 反序列化

序列化 指的是 把模型數據轉化成可傳輸的數據 (像json這種就是可傳輸的數據)
反序列化指的是 把可傳輸的數據轉化成模型類的數據

官方文檔

https://www.django-rest-framework.org/

源碼地址

https://github.com/encode/django-rest-framework/tree/master

環境安裝

pip install -i https://pypi.douban.com/simple djangorestframework==3.8.2

安裝完成之後一定要註冊
在這裏插入圖片描述

INSTALLED_APPS = [
‘’’’’’
‘rest_framework’
]

簡單的使用

模型類

創建一個學生和小組的模型類
之間的關係:一對多
在這裏插入圖片描述

from django.db import models

# Create your models here.
class Group(models.Model):
    name = models.CharField(verbose_name='小組名字',max_length=10)

class Student(models.Model):
    name = models.CharField(verbose_name='學生名字',max_length=10)
    age = models.IntegerField(verbose_name='學生年齡')
    group = models.ForeignKey(to=Group,on_delete=models.CASCADE)
    

寫完了之後,要注意遷移文件

遷移文件的命令
python manage.py makemigrations
python manage.py migrate

然後利用pycharm自帶的sqlite數據庫,填一些假數據
在這裏插入圖片描述
添加完假數據之後,按那個DB鍵(紅線上方)就可以
使用這個自帶的sqlite數據庫,可能要安裝一下驅動。
再添加學生的假數據
在這裏插入圖片描述
有了數據之後,就要去寫一個序列化文件

序列化

先在應用下新建一個serializers.py文件,目的是序列化我們的模型類。
在這裏插入圖片描述
結構是這樣的,每一個模型類都會對應一個序列化

在新建的這個文件中寫入下面的代碼

from rest_framework.serializers import HyperlinkedModelSerializer
from .models import Group,Student
#導入模型類

#先序列化小組類
class GroupSerializer(HyperlinkedModelSerializer):
    class Meta:
        #告訴它(新建的這個類),你要序列化哪個模型類以及要序列化這個類裏面的哪些字段
        model = Group
        fields = ('id','name')


class StudentSerializer(HyperlinkedModelSerializer):
    class Meta:
        model = Student
        fields = ('id','name','age','group')
        

這個序列化就完了
下面就開始寫視圖

寫視圖

from django.shortcuts import render
from rest_framework import viewsets
from .models import *
#導入模型類
from .serializers import *
#導入序列化類

# Create your views here.

class StudentViewSet(viewsets.ModelViewSet):
    queryset = Student.objects.all()
    #把查出的所有學生數據都序列化
    serializer_class = StudentSerializer
    #告訴它改完數據之後,用了哪個序列化類

class GroupViewSet(viewsets.ModelViewSet):
    queryset = Group.objects.all()
    serializer_class = GroupSerializer

配置路由

根及路由下

from django.contrib import admin
from django.urls import path,include
from app01 import views
from rest_framework.routers import DefaultRouter
#使用提供的路由

route = DefaultRouter()
#把視圖生成的路由註冊到這個裏
route.register(r'students',views.StudentViewSet)
route.register(r'groups',views.GroupViewSet)
#這樣的話,他會幫我們生成對應的路由

'''
http://127.0.0.1:8000/students就會生成這樣的路由
如果是獲取當個學生的話,路由就是
http://127.0.0.1:8000/students/1/
'''

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/',include(route.urls)),
    #這個加上api之後的路由就是http://127.0.0.1:8000/api/students


]

啓動服務器

python manage.py runserver

訪問瀏覽器http://127.0.0.1:8000/api/
在這裏插入圖片描述
會展示出這樣的數據
這些路由默認路由自動生成的,點進去之後
在這裏插入圖片描述
在這裏插入圖片描述
可以看到所有的學生,並且還可以增加學生
但是,增加學生的地方
在這裏插入圖片描述
也就是這個地方,它顯示的並不是小組的名字,那麼如何讓他顯示小組的名字呢
在模型類中,用str方法就好了
在這裏插入圖片描述
然後,再刷新頁面看
在這裏插入圖片描述
這樣就好了,並且也可以訪問當個學生
在這裏插入圖片描述

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