成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何借助Django來編寫一個Python Web API

開發 后端
Django 是 Python API 開發中最流行的框架之一,在這個教程中,我們來學習如何使用它。本文演示了一個簡單的 API,通過它可以使用 HTTP 協議的 GET 方法來從服務器獲取數據。

[[312568]]

Django 是 Python API 開發中最流行的框架之一,在這個教程中,我們來學習如何使用它。

Django 所有 Web 框架中最全面的,也是最受歡迎的一個。自 2005 年以來,其流行度大幅上升。

Django 是由 Django 軟件基金會維護,并且獲得了社區的大力支持,在全球擁有超過 11,600 名成員。在 Stack Overflow 上,約有 191,000 個帶 Django 標簽的問題。Spotify、YouTube 和 Instagram 等都使用 Django 來構建應用程序和數據管理。

本文演示了一個簡單的 API,通過它可以使用 HTTP 協議的 GET 方法來從服務器獲取數據。

構建一個項目

首先,為你的 Django 應用程序創建一個目錄結構,你可以在系統的任何位置創建:

  1. $ mkdir myproject
  2. $ cd myproject

然后,在項目目錄中創建一個虛擬環境來隔離本地包依賴關系:

  1. $ python3 -m venv env
  2. $ source env/bin/activate

在 Windows 上,使用命令 env\Scripts\activate 來激活虛擬環境。

安裝 Django 和 Django REST framework

然后,安裝 Django 和 Django REST 模塊:

  1. $ pip3 install django
  2. $ pip3 install djangorestframework

實例化一個新的 Django 項目

現在你的應用程序已經有了一個工作環境,你必須實例化一個新的 Django 項目。與 Flask 這樣微框架不同的是,Django 有專門的命令來創建(注意第一條命令后的 . 字符)。

  1. $ django-admin startproject tutorial .
  2. $ cd tutorial
  3. $ django-admin startapp quickstart

Django 使用數據庫來管理后端,所以你應該在開始開發之前同步數據庫,數據庫可以通過 manage.py 腳本管理,它是在你運行 django-admin 命令時創建的。因為你現在在 tutorial 目錄,所以使用 ../ 符號來運行腳本,它位于上一層目錄:

  1. $ python3 ../manage.py makemigrations
  2. No changes detected
  3. $ python4 ../manage.py migrate
  4. Operations to perform:
  5. Apply all migrations: admin, auth, contenttypes, sessions
  6. Running migrations:
  7. Applying contenttypes.0001_initial... OK
  8. Applying auth.0001_initial... OK
  9. Applying admin.0001_initial... OK
  10. Applying admin.0002_logentry_remove_auto_add... OK
  11. Applying admin.0003_logentry_add_action_flag_choices... OK
  12. Applying contenttypes.0002_remove_content_type_name... OK
  13. Applying auth.0002_alter_permission_name_max_length... OK
  14. Applying auth.0003_alter_user_email_max_length... OK
  15. Applying auth.0004_alter_user_username_opts... OK
  16. Applying auth.0005_alter_user_last_login_null... OK
  17. Applying auth.0006_require_contenttypes_0002... OK
  18. Applying auth.0007_alter_validators_add_error_messages... OK
  19. Applying auth.0008_alter_user_username_max_length... OK
  20. Applying auth.0009_alter_user_last_name_max_length... OK
  21. Applying auth.0010_alter_group_name_max_length... OK
  22. Applying auth.0011_update_proxy_permissions... OK
  23. Applying sessions.0001_initial... OK

在 Django 中創建用戶

創建一個名為 admin,示例密碼為 password123 的初始用戶:

  1. $ python3 ../manage.py createsuperuser \
  2. --email admin@example.com \
  3. --username admin

在提示時創建密碼。

在 Django 中實現序列化和視圖

為了使 Django 能夠將信息傳遞給 HTTP GET 請求,必須將信息對象轉化為有效的響應數據。Django 為此實現了“序列化類” serializers

在你的項目中,創建一個名為 quickstart/serializers.py 的新模塊,使用它來定義一些序列化器,模塊將用于數據展示:

  1. from django.contrib.auth.models import User, Group
  2. from rest_framework import serializers
  3.  
  4. class UserSerializer(serializers.HyperlinkedModelSerializer):
  5. class Meta:
  6. model = User
  7. fields = ['url', 'username', 'email', 'groups']
  8.  
  9. class GroupSerializer(serializers.HyperlinkedModelSerializer):
  10. class Meta:
  11. model = Group
  12. fields = ['url', 'name']

Django 中的視圖是一個接受 Web 請求并返回 Web 響應的函數。響應可以是 HTML、HTTP 重定向、HTTP 錯誤、JSON 或 XML 文檔、圖像或 TAR 文件,或者可以是從 Internet 獲得的任何其他內容。要創建視圖,打開 quickstart/views.py 并輸入以下代碼。該文件已經存在,并且其中包含一些示例文本,保留這些文本并將以下代碼添加到文件中:

  1. from django.contrib.auth.models import User, Group
  2. from rest_framework import viewsets
  3. from tutorial.quickstart.serializers import UserSerializer, GroupSerializer
  4.  
  5. class UserViewSet(viewsets.ModelViewSet):
  6. """
  7. API 允許查看或編輯用戶
  8. """
  9. queryset = User.objects.all().order_by('-date_joined')
  10. serializer_class = UserSerializer
  11.  
  12. class GroupViewSet(viewsets.ModelViewSet):
  13. """
  14. API 允許查看或編輯組
  15. """
  16. queryset = Group.objects.all()
  17. serializer_class = GroupSerializer

使用 Django 生成 URL

現在,你可以生成 URL 以便人們可以訪問你剛起步的 API。在文本編輯器中打開 urls.py 并將默認示例代碼替換為以下代碼:

  1. from django.urls import include, path
  2. from rest_framework import routers
  3. from tutorial.quickstart import views
  4.  
  5. router = routers.DefaultRouter()
  6. router.register(r'users', views.UserViewSet)
  7. router.register(r'groups', views.GroupViewSet)
  8.  
  9. # 使用自動路由 URL
  10. # 還有登錄 URL
  11. urlpatterns = [
  12. path('', include(router.urls)),
  13. path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
  14. ]

調整你的 Django 項目設置

這個示例項目的設置模塊存儲在 tutorial/settings.py 中,因此在文本編輯器中將其打開,然后在 INSTALLED_APPS 列表的末尾添加 rest_framework

  1. INSTALLED_APPS = [
  2. ...
  3. 'rest_framework',
  4. ]

測試 Django API

現在,你可以測試構建的 API。首先,從命令行啟動內置服務器:

  1. $ python3 manage.py runserver

你可以通過使用 curl 導航至 URL http://localhost:8000/users 來訪問 API:

  1. $ curl --get http://localhost:8000/users/?format=json
  2. [{"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 的主要優點:

  1. Django 社區的規模正在不斷擴大,因此即使你做一個復雜項目,也會有大量的指導資源。
  2. 默認包含模板、路由、表單、身份驗證和管理工具等功能,你不必尋找外部工具,也不必擔心第三方工具會引入兼容性問題。
  3. 用戶、循環和條件的簡單結構使你可以專注于編寫代碼。
  4. 這是一個成熟且經過優化的框架,它非常快速且可靠。

Django 的主要缺點:

  1. Django 很復雜!從開發人員視角的角度來看,它可能比簡單的框架更難學。
  2. Django 有一個很大的生態系統。一旦你熟悉它,這會很棒,但是當你深入學習時,它可能會令人感到無所適從。

對你的應用程序或 API 來說,Django 是絕佳選擇。下載并熟悉它,開始開發一個迷人的項目! 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2019-12-23 10:00:52

PythonFlaskPython Web

2021-04-07 13:38:27

Django項目視圖

2020-01-16 11:42:45

PyramidCornicePython Web

2024-04-16 08:09:36

JavapulsarAPI

2017-12-12 15:24:32

Web Server單線程實現

2022-02-01 16:02:03

PythonWeb服務器

2013-07-01 11:01:22

API設計API

2018-10-11 21:00:18

2023-09-21 22:43:17

Django框架

2023-12-12 08:08:17

插件PRPulsar

2015-08-19 09:29:35

Git協議編寫

2016-01-06 09:57:23

編寫PHP擴展

2018-09-08 08:41:21

Python 3API框架API Star

2022-07-26 08:14:16

注冊中心ProviderConsumer

2020-09-22 07:50:23

API接口業務

2024-03-08 12:45:00

C#Web服務器

2021-01-01 19:30:21

Python編程語言

2013-04-07 13:47:12

2018-11-26 08:06:24

API網關億級

2022-03-14 09:35:43

Pythonhttpx
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美综合一区二区三区 | 免费在线毛片 | 久久久.com| 精品欧美乱码久久久久久1区2区 | 国产97人人超碰caoprom | 国产福利视频导航 | 在线日韩中文字幕 | 性一交一乱一透一a级 | 在线一区 | 国产一区二区三区在线看 | 国产精品久久性 | 欧美色视频免费 | 久久99精品久久久久子伦 | 天天干狠狠 | 成人免费小视频 | 国产成人99久久亚洲综合精品 | 99re在线视频免费观看 | 国产成人综合在线 | 亚洲国产精品一区二区第一页 | 中文在线亚洲 | 国产高清一区二区三区 | 亚洲成人国产精品 | 日韩第一区 | 日韩中文欧美 | 国产精品久久久久一区二区三区 | 在线日韩视频 | 午夜精品久久久 | 玖玖在线精品 | 国产精品久久久久久久久久免费 | 欧美一级片| 精品欧美一区二区三区久久久 | 精品一级 | 97国产精品视频 | 九九热视频这里只有精品 | 日本精品一区二区三区在线观看 | 久久久这里都是精品 | www.精品国产 | 国产欧美一区二区三区久久人妖 | 性一交一乱一透一a级 | 97视频成人 | 欧美综合自拍 |