rest_framework django 簡單使用(資料庫建立資料, 覆蓋資料, 其他的大同小異)

趙先鑫發表於2020-06-18

事先說幾個坑:資料庫定義欄位時候,不要定義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 架構, 如果想使用,需要在這裡制定。
]

 

配上官網例項(講的非常詳細):https://www.django-rest-framework.org/ 

相關文章