Django rest framework與django寫的網站共用一個數據庫,同時讓rest framework生成api,

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訪問後臺數據,用的是同一數據庫

在這裏插入圖片描述

發佈了30 篇原創文章 · 獲贊 1 · 訪問量 3643
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章