今天就跟大家聊聊有關(guān)Django REST Framework該怎么理解,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
創(chuàng)新互聯(lián)公司專注于荔波網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供荔波營銷型網(wǎng)站建設(shè),荔波網(wǎng)站制作、荔波網(wǎng)頁設(shè)計、荔波網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造荔波網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供荔波網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。Django REST framework框架是一個功能強(qiáng)大且靈活的工具包,用于構(gòu)建Web API,且Django Rest Framework 是 Django 依賴擴(kuò)展 Restful Api 的框架,與Django的使用風(fēng)格類似,它的官方網(wǎng)站是: https://www.django-rest-framework.org/
我們先選擇一個APP,比如說我選擇的是schools APP,如何在設(shè)計這個APP中設(shè)計一個API接口,且在前端請求的時候,返回數(shù)據(jù)庫中所有學(xué)校的詳細(xì)信息呢?
第一步:首先需要在項目的urls.py文件(根路由)中添加二級路由;
url(r'^school/', include('schools.urls', namespace='schools'))
第二步:在schools APP中的urls.py文件添加路由,指定訪問路徑,需要導(dǎo)入AllSchoolsView類,AllSchoolsView類是在view.py文件中編寫,(記得執(zhí)行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() # 直接將數(shù)據(jù)庫中的QuerySet對象轉(zhuǎn)換為json數(shù)據(jù)格式 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文件中,根據(jù)需求創(chuàng)建schools_school表;
from django.db import models from datetime import datetime class School(models.Model): name = models.CharField(max_length=50, verbose_name='學(xué)校名稱') desc = models.CharField(max_length=100, verbose_name='學(xué)校描述') location = models.CharField(max_length=100, verbose_name='學(xué)校位置') create_time = models.DateTimeField(default=datetime.now, verbose_name='添加時間') course_numbers = models.IntegerField(default=0, verbose_name="課程數(shù)")
創(chuàng)建數(shù)據(jù)庫表前面的文章也講過,這里就不講了,數(shù)據(jù)庫表創(chuàng)建好了之后我們可以往里面增加數(shù)據(jù),可以使用命令行添加,但是這樣比較麻煩,所以這里我們數(shù)據(jù)庫管理和設(shè)計工具Navicat(文章最后介紹),使用這個工具我們可以手動增加修改數(shù)據(jù)庫表中的數(shù)據(jù),特別方便;
首先需要選擇一個待使用的數(shù)據(jù)庫,我使用的是MySql,然后創(chuàng)建連接,再填寫一下選項就可以了:
第五步:創(chuàng)建數(shù)據(jù)庫中schools_school表的數(shù)據(jù),可以通過Navicat來操作數(shù)據(jù)庫,最后我們的數(shù)據(jù)庫表示這樣的:
第六步:運(yùn)行項目,就能得到我們想要的json數(shù)據(jù)了,訪問路徑是http://127.0.0.1:8000/schools/all/
;
第一步:首先安裝好需要用到的包;
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認(rèn)證;
url(r'^api-auth/', include('rest_framework.urls'))
第四步:創(chuàng)建Django的管理員,選擇Tool->Run manage.py Task
,然后執(zhí)行createsuperuser
,編輯自己的用戶名、郵箱和密碼就可以了;
第五步:在schools APP中創(chuàng)建serializer.py
文件,在這個文件中導(dǎo)入serializers模塊
,然后創(chuàng)建一個序列化類(自己命名),讓這個類繼承serializers模塊
下的Serializer類;
from rest_framework import serializers class SchoolSerializer(serializers.Serializer): name = serializers.CharField() course_numbers = serializers.IntegerField()
第六步:在schools APP中的views.py文件中重寫AllSchoolsView類,重啟服務(wù)器就能得到Django REST framework返回的數(shù)據(jù)了;
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, 如果不設(shè)置,則返回一個 schools_serializer = SchoolSerializer(schools, many=True) return Response(schools_serializer.data)
Navicat是一套可創(chuàng)建多個連接的數(shù)據(jù)庫管理工具,用以方便管理
MySQL、Oracle、 PostgreSQL、SQLite、SQL Server、MariaDB 和/或 MongoDB
等不同類型的數(shù)據(jù)庫,并 支持管理某些云數(shù)據(jù)庫,例如阿里云、騰訊云;
Navicat 提供了三種平臺的版本Windows、macOS 、Linux
,可以讓用戶連接到本地或遠(yuǎn) 程服務(wù)器,并提供一些實(shí)用的數(shù)據(jù)庫工具以協(xié)助用戶管理數(shù)據(jù),包括 Navicat Cloud 協(xié)同合 作、數(shù)據(jù)建模、數(shù)據(jù)傳輸、數(shù)據(jù)同步、結(jié)構(gòu)同步、導(dǎo)入、導(dǎo)出、備份、還原和自動運(yùn)行;
看完上述內(nèi)容,你們對Django REST Framework該怎么理解有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝大家的支持。
分享名稱:DjangoRESTFramework該怎么理解-創(chuàng)新互聯(lián)
文章鏈接:http://muchs.cn/article4/dchjie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、App開發(fā)、微信公眾號、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容