1.按照之前的方法創建Django項目
在settings.py中的INSTALLED_APPS中添加'rest_framework'
其中創建模型中的models.py
from django.db import models
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=50)
def __str__(self):
return self.title
2.關鍵步驟:
(1)在mainsite中創建一個新的模塊serializers.py
from .models import Post
from rest_framework import serializers
class PostSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Post
fields = ('title', 'author')
修改視圖views.py
#from rest_framework.response import Response
#from rest_framework.views import APIView
from rest_framework import viewsets
from .models import Post
from .serializers import PostSerializer
# Create your views here.
"""
class PostView(APIView):
def get(self, request):
Post_list = Post.objects.all()
serializer = PostSerializer(Post_list, many=True)
return Response(serializer.data)
"""
class PostViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = Post.objects.all()
serializer_class = PostSerializer
組織API URLS,在restdemo/urls.py中
from django.contrib import admin
from rest_framework import routers
from mainsite import views
from django.urls import include, path
#add these line
router = routers.DefaultRouter()
router.register(r'posts', views.PostViewSet)
urlpatterns = [
path('admin/', admin.site.urls),
#path('posts/', views.PostView.as_view())
path('', include(router.urls)),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
上述views.py和urls.py中註釋掉的是中配置API URLS的方法。
最終測試我們的API
python manage.py runserver
直接通過瀏覽器訪問http://xxx.xxx.x.xx:8000/posts/
這樣既可以通過http://xxx.xxx.x.xx:8000/admin直接訪問後臺管理系統,也可以通過api訪問後臺數據,用的是同一數據庫