Django 是 Python 編程語言驅動的一個開源模型-視圖-控制器(MVC)風格的 Web 應用程序框架。它是Python API開發中最受歡迎的名稱之一,自2005年成立以來,其知名度迅速提升。
Django由Django軟件基金會(Django Software Foundation)維護,并獲得了社區的大力支持,在全球擁有11,600多個成員。在Stack Overflow上,Django大約有191,000個帶標簽的問題。Spotify,YouTube和Instagram等網站都依賴Django進行應用程序和數據管理。本文演示了使用HTTP協議的GET方法從服務器獲取數據的簡單API。
建立一個項目
首先,為您的Django應用程序創建一個結構;您可以在系統上的任何位置執行此操作:
$ mkdir myproject
$ cd myproject
然后創建一個虛擬環境,它能夠使我們根據需要安裝一些特定的包來跑通我們的程序,并且不影響當前環境,用完退出虛擬環境即可。
$ python3 -m venv env
$ source env/bin/activate
在Windows上,使用命令env \ Scripts \ activate激活Python虛擬環境。
安裝Django和Django REST框架
接下來,安裝Django和Django REST框架模塊:
$ pip3 install django
$ pip3 install djangorestframework
實例化一個新的Django項目
既然您已經為應用程序創建了工作環境,那么您必須實例化一個新的Django項目。與像Flask這樣的小框架不同,Django在此過程中包含專用命令(請注意第一個命令中的結尾.字符):
$ django-admin startproject tutorial .
$ cd tutorial
$ django-admin startapp quickstart
Django使用數據庫作為其后端,因此您應該在開始開發之前同步數據庫??梢允褂眠\行django-admin命令時創建的manage.py腳本來管理數據庫。由于您當前位于tutorial路徑中,因此請使用../命令來運行腳本,該腳本位于同一個路徑中:
$ python3 ../manage.py makemigrations
No changes detected
$ python4 ../manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running 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_initi... OK
在Django中創建用戶
使用示例密碼password123創建一個名為admin的初始用戶:
$ python3 ../manage.py createsuperuser \
--email admin@example.com \
--username admin
根據提示創建密碼。
在Django中實現序列化組件和視圖層
為了使Django能夠將信息傳遞給HTTP GET請求,必須將傳遞對象轉換為有效的響應數據。Django為此實現了序列化組件。
在您的項目中,通過創建一個名為quickstart / serializers.py的新模塊來定義一些序列化器,該模塊將用于數據傳輸:
from django.contrib.auth.models import User, Group
from rest_framework import serializers
class 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獲得的任何其他內容。要創建視圖函數,請打開quickstart / views.py并輸入以下代碼。該文件模板已經存在,并且其中包含一些樣板文本,因此請保留該文本并將其添加到文件中:
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from tutorial.quickstart.serializers import UserSerializer, GroupSerializer
class UserViewSet(viewsets.ModelViewSet):
"""
API endpoint allows users to be viewed or edited.
"""
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
class GroupViewSet(viewsets.ModelViewSet):
"""
API endpoint allows groups to be viewed or edited.
"""
queryset = Group.objects.all()
serializer_class = GroupSerializer
使用Django生成URL
現在,您可以生成URL,以便人們可以訪問您的API。在文本編輯器中打開urls.py,并將默認示例代碼替換為以下代碼:
from rest_framework import routers
from tutorial.quickstart import views
router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)
# Use automatic URL routing
# Can also include login URLs for the browsable API
urlpatterns = [
path('', include(router.urls)),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
調整您的Django項目設置
此示例項目的設置模塊存儲在tutorial / settings.py中,因此請在文本編輯器中將其打開,然后將rest_framework添加到INSTALLED_APPS列表的末尾:
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和Python的RESTful API的更深入的知識,請參閱Django文檔(https://docs.djangoproject.com/en/2.2/)。
以上就是“python api開發教程(用 Django 開發一個 Python Web API)”的詳細內容,想要了解更多Python教程歡迎持續關注編程學習網。
掃碼二維碼 獲取免費視頻學習資料
- 本文固定鏈接: http://www.healthpilotllc.com/post/10972/
- 轉載請注明:轉載必須在正文中標注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費視頻資料