rest_framework django 簡單使用(資料庫創建數據, 覆蓋數據, 其他的大同小異)
- 2020 年 6 月 18 日
- 筆記
- django, rest_framework
事先說幾個坑:資料庫定義欄位時候,不要定義name 要定義 username
首先, 定義model(簡單定義)
from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. # 可以不要定義ID ,id欄位資料庫會自動創建 class User(models.Model, models.Manager): class Meta: db_table = 'user' username = models.CharField(db_column='username', max_length=128, null=True) text = models.CharField(db_column='text', max_length=128, null=True)
第二, 定義user的序列化器, 在你的app下新建一個.py文件,默認叫做serializers.py
from rest_framework import serializers from .models import User class UserSerializers(serializers.ModelSerializer): class Meta: model = User # 指定序列化的model 是哪一個 fields = ['username', 'text'] # 指定需要序列化的欄位 def create(self, validated_data): print(validated_data) return User.objects.create(**validated_data) # 這個create 調用的是類似QuerySet()這個類的方法,所以不會遞歸。 def update(self, instance, validated_data): print('-' * 30, 'update') # print(instance, validated_data, '~~~~~~~~~~~~~~~~~') instance.username = validated_data.get('username') instance.text = validated_data.get('text') instance.save() return instance
第三步, 指定路由
from django.contrib import admin from django.urls import path, includefrom hys import views import hys urlpatterns = [ path('admin/', admin.site.urls), path('',views.Index.as_view()) # views : views 文件 Index:視圖類 as_view():調用方式(具體意思不是特別清楚) ]
第四步, 配置settings
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'hys', # hys 為自己鍵的app 的名字 'rest_framework', # rest_framework 為rest_framework 架構, 如果想使用,需要在這裡制定。 ]
配上官網實例(講的非常詳細)://www.django-rest-framework.org/