1.创建项目目录 配置backend
mkdir django-todo-react
cd django-todo-react
django-admin startproject backend
cd backend
django-admin startapp todo
注册应用todo
# backend/settings.py
# Application definition
INSTALLED_APPS = [
...
'todo' # 此处
]
定义 Todo model
# todo/models.py
from django.db import models
# Create your models here.
# add this
class Todo(models.Model):
title = models.CharField(max_length=120)
description = models.TextField()
completed = models.BooleanField(default=False)
def _str_(self):
return self.title
数据迁移
# todo/models.py
from django.db import models
# Create your models here.
# add this
python manage.py makemigrations todo
python manage.py migrate todo
注册模型到admin
# todo/admin.py
from django.contrib import admin
from .models import Todo # add this
class TodoAdmin(admin.ModelAdmin): # add this
list_display = ('title', 'description', 'completed') # add this
# Register your models here.
admin.site.register(Todo, TodoAdmin) # add this
创建账户 检查 并添加几条Todolist
python manage.py createsuperuser
2.配置APIs
注册rest_framework
#backend/settings.py
INSTALLED_APPS = [
...
'rest_framework',
]
分页
Pagination 允许控制每页返回多少个对象。使其能够将以下行添加到backend/settings.py
#backend/settings.py
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10
}
3.Todo model 序列化
新建文件todo/serializers.py
# todo/serializers.py
from rest_framework import serializers
from .models import Todo
class TodoSerializer(serializers.ModelSerializer):
class Meta:
model = Todo
fields = ('id', 'title', 'description', 'completed')
4.View视图
# todo/views.py
from django.shortcuts import render
from rest_framework import viewsets # add this
from .serializers import TodoSerializer # add this
from .models import Todo # add this
class TodoView(viewsets.ModelViewSet): # add this
serializer_class = TodoSerializer # add this
queryset = Todo.objects.all() # add this
视图集基类默认提供CRUD操作的实现,我们要做的是指定序列化程序类和查询集。