Django REST Framework介紹

1.Django REST framework框架介紹

  • Django REST framework框架是一個功能強大且靈活的工具包,用於構建Web API,且Django Rest Framework 是 Django 依賴擴展 Restful Api 的框架,與Django的使用風格相似,它的官方網站是:https://www.django-rest-framework.org/

2.設計API

咱們先選擇一個APP,好比說我選擇的是schools APP,如何在設計這個APP中設計一個API接口,且在前端請求的時候,返回數據庫中全部學校的詳細信息呢?html

  • 第一步:首先須要在項目的urls.py文件(根路由)中添加二級路由;
url(r'^school/', include('schools.urls', namespace='schools'))
  • 第二步:在schools APP中的urls.py文件添加路由,指定訪問路徑,須要導入AllSchoolsView類,AllSchoolsView類是在view.py文件中編寫,(記得執行makemigration 和 migrate操做)
url(r'^all/$', AllSchoolsView.as_view(), name='all')
  • 第三步:在schools APP中的views.py文件中,編寫AllSchoolsView類
from django.views.generic.base import View
import json
from django.core.serializers import serialize
from django.http import HttpResponse, JsonResponse
from .models import School

class AllSchoolsView(View):
    def get(self, request):
        schools = School.objects.all()
        # 直接將數據庫中的QuerySet對象轉換爲json數據格式
        goods_json = serialize('json', schools)
        print(type(goods_json))
        print('serialize: --------{}'.format(goods_json))
        return HttpResponse(content=goods_json, content_type='application/json')
  • 第四步:在schools APP中的models.py文件中,根據需求建立schools_school表;
from django.db import models
from datetime import datetime

class School(models.Model):
    name = models.CharField(max_length=50, verbose_name='學校名稱')
    desc = models.CharField(max_length=100, verbose_name='學校描述')
    location = models.CharField(max_length=100, verbose_name='學校位置')
    create_time = models.DateTimeField(default=datetime.now, verbose_name='添加時間')
    course_numbers = models.IntegerField(default=0, verbose_name="課程數")

建立數據庫表前面的文章也講過,這裏就不講了,數據庫表建立好了以後咱們能夠往裏面增長數據,可使用命令行添加,可是這樣比較麻煩,因此這裏咱們數據庫管理和設計工具Navicat(文章最後介紹),使用這個工具咱們能夠手動增長修改數據庫表中的數據,特別方便;
首先須要選擇一個待使用的數據庫,我使用的是MySql,而後建立鏈接,再填寫一下選項就能夠了:前端

1.png

2.png

3.png

  • 第五步:建立數據庫中schools_school表的數據,能夠經過Navicat來操做數據庫,最後咱們的數據庫表示這樣的:

4.png

  • 第六步:運行項目,就能獲得咱們想要的json數據了,訪問路徑是http://127.0.0.1:8000/schools/all/

3.使用Django REST framework定製Restful API

  • 第一步:首先安裝好須要用到的包;
pip install djangorestframework
pip install markdown       # Markdown support for the browsable API.
pip install django-filter  # Filtering support
  • 第二步:而後在項目的settings文件的INSTALLED_APPS中添加rest_framewor;
INSTALLED_APPS = (
    'rest_framework',
)
  • 第三步:在根路由urls.py中加一條路由,用於支持瀏覽器訪問api認證;
url(r'^api-auth/', include('rest_framework.urls'))
  • 第四步:建立Django的管理員,選擇Tool->Run manage.py Task而後執行createsuperuser,編輯本身的用戶名、郵箱和密碼就能夠了;
  • 第五步:在schools APP中建立serializer.py文件,在這個文件中導入serializers模塊,而後建立一個序列化類(本身命名),讓這個類繼承serializers模塊下的Serializer類;
from rest_framework import serializers
class SchoolSerializer(serializers.Serializer):
    name = serializers.CharField()
    course_numbers = serializers.IntegerField()
  • 第六步:在schools APP中的views.py文件中重寫AllSchoolsView類,重啓服務器就能獲得Django REST framework返回的數據了;
from .models import School
from rest_framework.views import APIView
from rest_framework.response import Response
from .serializer import SchoolSerializer

class AllSchoolsView(APIView):
    def get(self, request):
        schools = School.objects.all()
        # many表示返回一個list, 若是不設置,則返回一個
        schools_serializer = SchoolSerializer(schools, many=True)
        return Response(schools_serializer.data)

5.png

4.Navicat

  • Navicat是一套可建立多個鏈接的數據庫管理工具,用以方便管理 MySQL、Oracle、 PostgreSQL、SQLite、SQL Server、MariaDB 和/或 MongoDB 等不一樣類型的數據庫,並 支持管理某些雲數據庫,例如阿里雲、騰訊雲;
  • Navicat 提供了三種平臺的版本Windows、macOS 、Linux,可讓用戶鏈接到本地或遠 程服務器,並提供一些實用的數據庫工具以協助用戶管理數據,包括 Navicat Cloud 協同合 做、數據建模、數據傳輸、數據同步、結構同步、導入、導出、備份、還原和自動運行;
  • 想了解更多用法能夠查看官網,官網地址:https://www.navicat.com/en/

[](https://www.9xkd.com/teacher/...數據庫

參考:https://www.9xkd.com/user/plan-view.html?id=7558399250django

相關文章
相關標籤/搜索