编辑项目App
创建数据库表,使用编辑器编辑myapp文件夹下的models.py文件,示例如下:
from django.db import models
class Book(models.Model):
owner = models.ForeignKey('auth.User', related_name='books', on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=100, blank=True, default='')
summary = models.TextField()
class Meta:
ordering = ('created',)
创建序列化对象,在myapp文件夹下创建serializers.py文件,并使用编辑器打开编辑:
from rest_framework import serializers
from myapp.models import Book
class BookSerializer(serializers.HyperlinkedModelSerializer):
owner = serializers.ReadOnlyField(source='owner.username')
class Meta:
model = Book
fields = ('url', 'id', 'owner', 'created', 'title', 'summary')
创建视图对象,使用编辑器打开myapp文件夹下的views.py文件编辑:
from myapp.models import Book
from myapp.serializers import BookSerializer
from rest_framework import permissions
from rest_framework.response import Response
from rest_framework import viewsets
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.order_by('-created').all()
serializer_class = BookSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
重新修改项目同名文件夹下的urls.py文件,加入新的路由:
from django.contrib import admin
from django.urls import path, include
from rest_framework.schemas import get_schema_view
from rest_framework.routers import DefaultRouter
from myapp.views import BookViewSet
schema_view = get_schema_view(title='API Root')
router = DefaultRouter()
router.register('books', BookViewSet)
urlpatterns = [
path('', include(router.urls)),
path('schema/', schema_view),
path('admin/', admin.site.urls),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
path('auth/', include('rest_auth.urls')),
path('auth/registration/', include('rest_auth.registration.urls')),
]
构建数据库表结构,以后若app中有改动models.py文件中的表结构,都需要重新makemigration与migrate:
(env_name) ➜ project_name python manager.py makemigration myapp
(env_name) ➜ project_name python manager.py migrate
重新启动项目
(env_name) ➜ project_name python manager.py runserver
预览项目:
打开浏览器输入相应的地址:http://127.0.0.1:8000,即可看到项目运行情况。
相比最开始启动项目,目前多了如下接口,若要执行 修改PUT、删除DELETE 操作,则需要登录授权过才可以:
- 书籍列表接口(支持获取列表、创建书籍): http://127.0.0.1:8000/books/
- 书籍详情接口(支持获取书籍详情、修改书籍、删除书籍): http://127.0.0.1:8000/books/book_id/