编辑项目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 操作,则需要登录授权过才可以:

  1. 书籍列表接口(支持获取列表、创建书籍): http://127.0.0.1:8000/books/
  2. 书籍详情接口(支持获取书籍详情、修改书籍、删除书籍): http://127.0.0.1:8000/books/book_id/
Copyright © zhengxiangqi 2018 all right reserved,powered by Gitbook该文件修订时间: 2019-09-30 02:14:29

results matching ""

    No results matching ""