Django 是 Python API 開發(fā)中最流行的框架之一,在這個教程中,我們來學習如何使用它。– Rachel Waston(作者)
Django 所有 Web 框架中最全面的,也是最受歡迎的一個。自 2005 年以來,其流行度大幅上升。
Django 是由 Django 軟件基金會維護,并且獲得了社區(qū)的大力支持,在全球擁有超過 11,600 名成員。在 Stack Overflow 上,約有 191,000 個帶 Django 標簽的問題。Spotify、YouTube 和 Instagram 等都使用 Django 來構建應用程序和數據管理。
本文演示了一個簡單的 API,通過它可以使用 HTTP 協(xié)議的 GET 方法來從服務器獲取數據。
構建一個項目
首先,為你的 Django 應用程序創(chuàng)建一個目錄結構,你可以在系統(tǒng)的任何位置創(chuàng)建:
$ mkdir myproject$ cd myproject
然后,在項目目錄中創(chuàng)建一個虛擬環(huán)境來隔離本地包依賴關系:
$ python3 -m venv env$ source env/bin/activate
在 Windows 上,使用命令 envScriptsactivate 來激活虛擬環(huán)境。
安裝 Django 和 Django REST framework
然后,安裝 Django 和 Django REST 模塊:
$ pip3 install django$ pip3 install djangorestframework
實例化一個新的 Django 項目
現在你的應用程序已經有了一個工作環(huán)境,你必須實例化一個新的 Django 項目。與 Flask 這樣微框架不同的是,Django 有專門的命令來創(chuàng)建(注意第一條命令后的 . 字符)。
$ django-admin startproject tutorial .$ cd tutorial$ django-admin startapp quickstart
Django 使用數據庫來管理后端,所以你應該在開始開發(fā)之前同步數據庫,數據庫可以通過 manage.py 腳本管理,它是在你運行 django-admin 命令時創(chuàng)建的。因為你現在在 tutorial 目錄,所以使用 ../ 符號來運行腳本,它位于上一層目錄:
$ python3 ../manage.py makemigrationsNo changes detected$ python4 ../manage.py migrateOperations to perform:??Apply all migrations: admin, auth, contenttypes, sessionsRunning migrations:??Applying contenttypes.0001_initial... OK??Applying auth.0001_initial... OK??Applying admin.0001_initial... OK??Applying admin.0002_logentry_remove_auto_add... OK??Applying admin.0003_logentry_add_action_flag_choices... OK??Applying contenttypes.0002_remove_content_type_name... OK??Applying auth.0002_alter_permission_name_max_length... OK??Applying auth.0003_alter_user_email_max_length... OK??Applying auth.0004_alter_user_username_opts... OK??Applying auth.0005_alter_user_last_login_null... OK??Applying auth.0006_require_contenttypes_0002... OK??Applying auth.0007_alter_validators_add_error_messages... OK??Applying auth.0008_alter_user_username_max_length... OK??Applying auth.0009_alter_user_last_name_max_length... OK??Applying auth.0010_alter_group_name_max_length... OK??Applying auth.0011_update_proxy_permissions... OK??Applying sessions.0001_initial... OK
在 Django 中創(chuàng)建用戶
創(chuàng)建一個名為 admin,示例密碼為 password123 的初始用戶:
$ python3 ../manage.py createsuperuser ??--email admin@example.com ??--username admin
在提示時創(chuàng)建密碼。
在 Django 中實現序列化和視圖
為了使 Django 能夠將信息傳遞給 HTTP GET 請求,必須將信息對象轉化為有效的響應數據。Django 為此實現了“序列化類” serializers。
在你的項目中,創(chuàng)建一個名為 quickstart/serializers.py 的新模塊,使用它來定義一些序列化器,模塊將用于數據展示:
from django.contrib.auth.models import User, Groupfrom rest_framework import serializersclass UserSerializer(serializers.HyperlinkedModelSerializer):????class Meta:????????model = User????????fields = ['url', 'username', 'email', 'groups']class GroupSerializer(serializers.HyperlinkedModelSerializer):????class Meta:????????model = Group????????fields = ['url', 'name']
Django 中的 視圖 是一個接受 Web 請求并返回 Web 響應的函數。響應可以是 HTML、HTTP 重定向、HTTP 錯誤、JSON 或 XML 文檔、圖像或 TAR 文件,或者可以是從 Internet 獲得的任何其他內容。要創(chuàng)建視圖,打開 quickstart/views.py 并輸入以下代碼。該文件已經存在,并且其中包含一些示例文本,保留這些文本并將以下代碼添加到文件中:
from django.contrib.auth.models import User, Groupfrom rest_framework import viewsetsfrom tutorial.quickstart.serializers import UserSerializer, GroupSerializerclass UserViewSet(viewsets.ModelViewSet):????"""????API 允許查看或編輯用戶????"""????queryset = User.objects.all().order_by('-date_joined')????serializer_class = UserSerializerclass GroupViewSet(viewsets.ModelViewSet):????"""????API 允許查看或編輯組????"""????queryset = Group.objects.all()????serializer_class = GroupSerializer
使用 Django 生成 URL
現在,你可以生成 URL 以便人們可以訪問你剛起步的 API。在文本編輯器中打開 urls.py 并將默認示例代碼替換為以下代碼:
from django.urls import include, pathfrom rest_framework import routersfrom tutorial.quickstart import viewsrouter = routers.DefaultRouter()router.register(r'users', views.UserViewSet)router.register(r'groups', views.GroupViewSet)# 使用自動路由 URL# 還有登錄 URLurlpatterns = [????path('', include(router.urls)),????path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))]
調整你的 Django 項目設置
這個示例項目的設置模塊存儲在 tutorial/settings.py 中,因此在文本編輯器中將其打開,然后在 INSTALLED_APPS 列表的末尾添加 rest_framework:
INSTALLED_APPS = [????...????'rest_framework',]
測試 Django API
現在,你可以測試構建的 API。首先,從命令行啟動內置服務器:
$ python3 manage.py runserver
你可以通過使用 curl 導航至 URL http://localhost:8000/users 來訪問 API:
$ curl --get http://localhost:8000/users/?format=json[{"url":"http://localhost:8000/users/1/?format=json","username":"admin","email":"admin@example.com","groups":[]}]
使用 Firefox 或你選擇的 開源瀏覽器 :
一個簡單的 Django API
有關使用 Django 和 Python 的 RESTful API 的更多深入知識,參考出色的 Django 文檔 。
為什么要使用 Djago?
Django 的主要優(yōu)點:
- Django 社區(qū)的規(guī)模正在不斷擴大,因此即使你做一個復雜項目,也會有大量的指導資源。
- 默認包含模板、路由、表單、身份驗證和管理工具等功能,你不必尋找外部工具,也不必擔心第三方工具會引入兼容性問題。
- 用戶、循環(huán)和條件的簡單結構使你可以專注于編寫代碼。
- 這是一個成熟且經過優(yōu)化的框架,它非??焖偾铱煽?。
Django 的主要缺點:
- Django 很復雜!從開發(fā)人員視角的角度來看,它可能比簡單的框架更難學。
- Django 有一個很大的生態(tài)系統(tǒng)。一旦你熟悉它,這會很棒,但是當你深入學習時,它可能會令人感到無所適從。
對你的應用程序或 API 來說,Django 是絕佳選擇。下載并熟悉它,開始開發(fā)一個迷人的項目!
via: https://opensource.com/article/19/11/python-web-api-django
作者: Rachel Waston 選題: lujun9972 譯者: MjSeven 校對: wxy
本文由 LCTT 原創(chuàng)編譯, Linux中國 榮譽推出
點擊“了解更多”可訪問文內鏈接
版權聲明:本文內容由互聯(lián)網用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現本站有涉嫌抄襲侵權/違法違規(guī)的內容, 請發(fā)送郵件至 舉報,一經查實,本站將立刻刪除。