av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

用 Django 開發(fā)一個(gè) Python Web API的方法步驟

瀏覽:2日期:2022-07-28 14:59:29

Django 是 Python 編程語(yǔ)言驅(qū)動(dòng)的一個(gè)開源模型-視圖-控制器(MVC)風(fēng)格的 Web 應(yīng)用程序框架。它是Python API開發(fā)中最受歡迎的名稱之一,自2005年成立以來,其知名度迅速提升。

Django由Django軟件基金會(huì)(Django Software Foundation)維護(hù),并獲得了社區(qū)的大力支持,在全球擁有11,600多個(gè)成員。在Stack Overflow上,Django大約有191,000個(gè)帶標(biāo)簽的問題。Spotify,YouTube和Instagram等網(wǎng)站都依賴Django進(jìn)行應(yīng)用程序和數(shù)據(jù)管理。

本文演示了使用HTTP協(xié)議的GET方法從服務(wù)器獲取數(shù)據(jù)的簡(jiǎn)單API。

建立一個(gè)項(xiàng)目

首先,為您的Django應(yīng)用程序創(chuàng)建一個(gè)結(jié)構(gòu);您可以在系統(tǒng)上的任何位置執(zhí)行此操作:

$ mkdir myproject$ cd myproject

然后創(chuàng)建一個(gè)虛擬環(huán)境,它能夠使我們根據(jù)需要安裝一些特定的包來跑通我們的程序,并且不影響當(dāng)前環(huán)境,用完退出虛擬環(huán)境即可。

$ python3 -m venv env$ source env/bin/activate

在Windows上,使用命令env Scripts activate激活Python虛擬環(huán)境。

安裝Django和Django REST框架

接下來,安裝Django和Django REST框架模塊:

$ pip3 install django$ pip3 install djangorestframework

實(shí)例化一個(gè)新的Django項(xiàng)目

既然您已經(jīng)為應(yīng)用程序創(chuàng)建了工作環(huán)境,那么您必須實(shí)例化一個(gè)新的Django項(xiàng)目。與像Flask這樣的小框架不同,Django在此過程中包含專用命令(請(qǐng)注意第一個(gè)命令中的結(jié)尾.字符):

$ django-admin startproject tutorial .$ cd tutorial$ django-admin startapp quickstart

Django使用數(shù)據(jù)庫(kù)作為其后端,因此您應(yīng)該在開始開發(fā)之前同步數(shù)據(jù)庫(kù)。可以使用運(yùn)行django-admin命令時(shí)創(chuàng)建的manage.py腳本來管理數(shù)據(jù)庫(kù)。由于您當(dāng)前位于tutorial路徑中,因此請(qǐng)使用../命令來運(yùn)行腳本,該腳本位于同一個(gè)路徑中:

$ 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)建用戶

使用示例密碼password123創(chuàng)建一個(gè)名為admin的初始用戶:

$ python3 ../manage.py createsuperuser --email admin@example.com --username admin

根據(jù)提示創(chuàng)建密碼。

在Django中實(shí)現(xiàn)序列化組件和視圖層

為了使Django能夠?qū)⑿畔鬟f給HTTP GET請(qǐng)求,必須將傳遞對(duì)象轉(zhuǎn)換為有效的響應(yīng)數(shù)據(jù)。Django為此實(shí)現(xiàn)了序列化組件。

在您的項(xiàng)目中,通過創(chuàng)建一個(gè)名為quickstart / serializers.py的新模塊來定義一些序列化器,該模塊將用于數(shù)據(jù)傳輸:

from django.contrib.auth.models import User, Groupfrom 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中的視圖是一個(gè)接受Web請(qǐng)求并返回Web響應(yīng)的函數(shù)。響應(yīng)可以是HTML,或者是HTTP重定向,或者是HTTP錯(cuò)誤,JSON或XML文檔,圖像或TAR文件,或者可以從Internet獲得的任何其他內(nèi)容。要?jiǎng)?chuàng)建視圖函數(shù),請(qǐng)打開quickstart / views.py并輸入以下代碼。該文件模板已經(jīng)存在,并且其中包含一些樣板文本,因此請(qǐng)保留該文本并將其添加到文件中:

from django.contrib.auth.models import User, Groupfrom rest_framework import viewsetsfrom 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

現(xiàn)在,您可以生成URL,以便人們可以訪問您的API。在文本編輯器中打開urls.py,并將默認(rèn)示例代碼替換為以下代碼:

from django.urls import include, pathfrom rest_framework import routersfrom 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 APIurlpatterns = [ path(’’, include(router.urls)), path(’api-auth/’, include(’rest_framework.urls’, namespace=’rest_framework’))]

調(diào)整您的Django項(xiàng)目設(shè)置

此示例項(xiàng)目的設(shè)置模塊存儲(chǔ)在tutorial / settings.py中,因此請(qǐng)?jiān)谖谋揪庉嬈髦袑⑵浯蜷_,然后將rest_framework添加到INSTALLED_APPS列表的末尾:

INSTALLED_APPS = [ ... ’rest_framework’,]

測(cè)試您的Django API

現(xiàn)在,您可以測(cè)試已構(gòu)建的API。首先,從命令行啟動(dòng)內(nèi)置服務(wù)器:

$ 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瀏覽器等:

有關(guān)使用Django和Python的RESTful API的更深入的知識(shí),請(qǐng)參閱Django文檔(https://docs.djangoproject.com/en/2.2/)。

到此這篇關(guān)于用 Django 開發(fā)一個(gè) Python Web API的方法步驟的文章就介紹到這了,更多相關(guān)Django 開發(fā)Python Web內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 久久久99国产精品免费 | 日本免费一区二区三区视频 | 成人免费网站 | 91在线观看 | 欧美精产国品一二三区 | 国内精品成人 | 人成精品 | 午夜免费视频 | 亚洲国产成人av好男人在线观看 | 精品国产18久久久久久二百 | 亚洲欧美在线观看 | 亚洲精品久久久一区二区三区 | 91视频在线 | 日韩不卡一区二区三区 | 欧美一级一 | 欧美激情欧美激情在线五月 | 久久精品男人的天堂 | 成人美女免费网站视频 | 精品国产一区二区三区久久 | 91视频三区 | 日韩在线大片 | 99在线免费视频 | 91看片网| 久久99精品久久久 | 亚洲综合无码一区二区 | 国产成人在线一区二区 | 午夜看看 | 久草在线 | 中文字幕精品一区二区三区在线 | 日日夜夜天天 | 乱码av午夜噜噜噜噜动漫 | 99久久日韩精品免费热麻豆美女 | 性高湖久久久久久久久aaaaa | 国产农村妇女毛片精品久久麻豆 | 国产一区日韩在线 | 精品久久久久久亚洲精品 | 亚洲日韩中文字幕一区 | 日韩在线视频观看 | 中文字幕不卡在线观看 | 一级做a爰片性色毛片视频停止 | 户外露出一区二区三区 |