DRF+react学习:实现TodoList

523 阅读1分钟

参考:DRF + react 实现TodoList

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操作的实现,我们要做的是指定序列化程序类和查询集。

5.URLs

编写后端backend/urls.py文件