91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django REST Framework該怎么理解

發布時間:2021-12-08 16:22:57 來源:億速云 閱讀:171 作者:柒染 欄目:編程語言

今天就跟大家聊聊有關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接口,且在前端請求的時候,返回數據庫中所有學校的詳細信息呢?

  • 第一步:首先需要在項目的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,然后創建連接,再填寫一下選項就可以了:

Django REST Framework該怎么理解

Django REST Framework該怎么理解

Django REST Framework該怎么理解

  • 第五步:創建數據庫中schools_school表的數據,可以通過Navicat來操作數據庫,最后我們的數據庫表示這樣的:

Django REST Framework該怎么理解

  • 第六步:運行項目,就能得到我們想要的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)

Django REST Framework該怎么理解

4.Navicat

  • Navicat是一套可創建多個連接的數據庫管理工具,用以方便管理 MySQL、Oracle、 PostgreSQL、SQLite、SQL Server、MariaDB 和/或 MongoDB 等不同類型的數據庫,并 支持管理某些云數據庫,例如阿里云、騰訊云;

  • Navicat 提供了三種平臺的版本Windows、macOS 、Linux,可以讓用戶連接到本地或遠 程服務器,并提供一些實用的數據庫工具以協助用戶管理數據,包括 Navicat Cloud 協同合 作、數據建模、數據傳輸、數據同步、結構同步、導入、導出、備份、還原和自動運行;

看完上述內容,你們對Django REST Framework該怎么理解有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石屏县| 尼木县| 荃湾区| 镇坪县| 芜湖县| 赣榆县| 鹤岗市| 清苑县| 富川| 隆德县| 班戈县| 武穴市| 水城县| 仙游县| 乐东| 鄂托克前旗| 郓城县| 锡林浩特市| 南江县| 桐乡市| 台山市| 湄潭县| 石泉县| 福贡县| 比如县| 普兰县| 济源市| 若尔盖县| 天峨县| 隆德县| 江北区| 句容市| 抚顺县| 彩票| 葫芦岛市| 大宁县| 资讯| 科技| 绥宁县| 山东省| 阿勒泰市|