新建app
例如新建一个books app
$ python3 manage.py startapp books
可能需要修改settings.py
文件
INSTALLED_APPS = [
# ...
'books.apps.BooksConfig',
]
安装RestFramework
$ pip install django-rest-framework
修改配置文件
修改settings.py
文件
INSTALLED_APPS = [
# ...
'rest_framework',
]
添加路由
打开settings.py
文件同目录下的urls.py
文件并修改
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('books/', include('book.urls')),
]
编写模型类
在books/models.py
文件中编写Books
模型类
from django.db import models
class Books(models.Model):
name = models.CharField(max_length=30)
author = models.CharField(max_length=30, blank=True, null=True)
编写序列化器
在books
目录下创建serializer.py
文件,编写BooksSerializer
序列化器
from rest_framework import serializers
from .models import Books
class BooksSerializer(serializers.ModelSerializer):
class Meta:
model = Books
fields = '__all__'
编写视图类
在books/views.py
文件中编写BooksViewSet
视图集
# books/views.py
from rest_framework import viewsets
from .models import Books
from .serializer import BooksSerializer
class BooksViewSet(viewsets.ModelViewSet):
queryset = Books.objects.all()
serializer_class = BooksSerializer
编写子路由
打开books/urls.py
文件并编辑
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import BooksViewSet
router = DefaultRouter()
router.register('books', BooksViewSet)
urlpatterns = [
path('', include(router.urls)),
]
迁移数据库
$ python manage.py makemigrations
$ python manage.py migrate
打开链接localhost:8000/books/books
处理跨域问题
安装模块
$ pip install django-cors-headers
修改settings.py
文件
INSTALLED_APPS = [
# ...
'corsheaders',
# ...
]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
# ...
]
# 跨域配置
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True