新建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目錄下創(chuàng)建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)),
]
遷移數(shù)據(jù)庫
$ 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