欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python django中如何使用restful框架

 更新時間:2021年06月23日 11:07:12   作者:頂級飲水機管理員  
今天給大家?guī)淼氖顷P(guān)于Python框架的相關(guān)知識,文章圍繞著django中restful框架的使用展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下

restful框架的使用

在使用django進行前后臺分離開發(fā)時通常會搭配django-rest-framework框架創(chuàng)建RESTful風(fēng)格的接口API??蚣芙榻B及版本要求可參考官方地址:https://www.django-rest-framework.org

本文以創(chuàng)建man包含namesex字段的API為實例學(xué)習(xí)django-rest-framework框架的使用。

主要包含下面5個步驟:

1.創(chuàng)建Django項目

2.創(chuàng)建ORM模型

3.加載Django REST Framework

4.序列化模型

5.創(chuàng)建加載數(shù)據(jù)的view和url

1.創(chuàng)建Django項目

創(chuàng)建django_rest

django-admin startproject django_rest

進入django_rest,創(chuàng)建虛擬環(huán)境env

virtualenv env

激活虛擬環(huán)境,并安裝django

source ./env/bin/activate

安裝 django

pip install django

創(chuàng)建rest_app

python manage.py startapp rest_app

注冊app,將app添加到INSTALLED_APPS

#setting.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_app'
]

創(chuàng)建后臺admin賬戶用于管理

$ python manage.py createsuperuser

Username (leave blank to use 'root'):admin 
Email address: 
Password: 
Password (again): 
Superuser created successfully.

2.創(chuàng)建ORM模型

數(shù)據(jù)庫我們使用默認sqlite3 即可,如需要變更可在setting.py中databases配置。

修改我們/django_rest/models.py添加我們man的模型

#models.py

from django.db import models



# Create your models here.
class Man(models.Model):
    name = models.CharField(max_length=64)
    sex = models.CharField(max_length=64)

    def __str__(self):
        return self.name

做數(shù)據(jù)庫遷移

python manage.py makemigrations 
python manage.py migrate

將Man這個model注冊到我們的后臺,以便可以通過django的后臺做增刪查改,編寫admin.py如下

#admin.py
from django.contrib import admin
from .models import Man
# Register your models here.

admin.site.register(Man)  # 注冊Man到后臺

啟動django服務(wù)

python manage.py runserver

訪問 http://127.0.0.1:8000/admin/可以看到登錄界面,輸入密碼登錄

可以看到我們的rest_app下的模型man對象mans

我們添加一個那個男人lgd.ame

3. 加載Django REST Framework

安裝工具包

pip install djangorestframework

注冊rest_framework

#setting.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_app'
    'rest_framework' #注冊
]

4.序列化模型

序列化器會把我們的模型數(shù)據(jù)轉(zhuǎn)化(序列化)為json格式,這樣就能夠被請求了。同樣當(dāng)有josn數(shù)據(jù)提交過來的時候,序列化器會將json數(shù)據(jù)轉(zhuǎn)換為模型供咋們使用。

我們在rest_app下創(chuàng)建文件serializer.py

我們要做三件事:

1.導(dǎo)入Man模型

2.導(dǎo)入序REST Framework序列化器

3.創(chuàng)建新的類將模型和序列化器鏈接起來

from rest_framework import serializers

from .models import Man

class Manserializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Man
        fields = ('name','sex')

5.創(chuàng)建加載數(shù)據(jù)的view和url

我們需要把序列化后的數(shù)據(jù)返回給瀏覽器,所以要做一下步驟:

1.通過不通的Man查詢數(shù)據(jù)庫

2.將查詢后的數(shù)據(jù)傳遞給序列化器,通過序列化器轉(zhuǎn)化為json

我們在rest_app/views.py編寫我們的視圖,ModelViewSet由rest_framework提供,包含了get、post方法

# views.py
from rest_framework import viewsets

from .serializers import ManSerializer
from .models import Man


class ManViewSet(viewsets.ModelViewSet):
    queryset = Man.objects.all().order_by('name')  #查詢結(jié)果給queryset
    serializer_class = ManSerializer     #對結(jié)果進序列化

在django_rest目錄下urls.py添加api路由

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('rest_app.urls')),
 ]

在rest_app目錄下創(chuàng)建urls.py添加視圖路由,通過rest_framework中router確保我們的請求到正確的動態(tài)資源。

from django.urls import include, path
from rest_framework import routers
from . import views

router = routers.DefaultRouter()
router.register(r'man', views.ManViewSet)   #路由到ManViewSet視圖

# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
    path('', include(router.urls)), #使用router路由
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

最后我們來啟動服務(wù),訪問http://127.0.0.1:8000/ 可以在瀏覽器查看到我們api信息

python manage.py runserver

訪問http://127.0.0.1:8000/man/ 來查看man資源

通過id來訪問api資源http://127.0.0.1:8000/man/1/

這樣我們一個基礎(chǔ)restful風(fēng)格的API創(chuàng)建完成了。感覺關(guān)鍵點還是理解ModelViewSet和內(nèi)置router不讀源碼很難知其所以然。

到此這篇關(guān)于Python django中如何使用restful框架的文章就介紹到這了,更多相關(guān)restful框架的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何使用python把ppt轉(zhuǎn)換成pdf

    如何使用python把ppt轉(zhuǎn)換成pdf

    這篇文章主要介紹了如何使用python把ppt轉(zhuǎn)換成pdf,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-06-06
  • Python模擬自動存取款機的查詢、存取款、修改密碼等操作

    Python模擬自動存取款機的查詢、存取款、修改密碼等操作

    這篇文章主要介紹了Python模擬自動存取款機的查詢、存取款、修改密碼等操作,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • Python通過屬性手段實現(xiàn)只允許調(diào)用一次的示例講解

    Python通過屬性手段實現(xiàn)只允許調(diào)用一次的示例講解

    下面小編就為大家分享一篇Python通過屬性手段實現(xiàn)只允許調(diào)用一次的示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python中類的相互調(diào)用的實踐

    python中類的相互調(diào)用的實踐

    本文主要介紹了python中類的相互調(diào)用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python實現(xiàn)將目錄中TXT合并成一個大TXT文件的方法

    Python實現(xiàn)將目錄中TXT合并成一個大TXT文件的方法

    這篇文章主要介紹了Python實現(xiàn)將目錄中TXT合并成一個大TXT文件的方法,涉及Python針對目錄下文本文件的遍歷、讀取及寫入等技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • python if not in 多條件判斷代碼

    python if not in 多條件判斷代碼

    學(xué)了一段時間python,發(fā)現(xiàn)有時遇到多條件判斷的時候,覺得使用單純的in的話比較麻煩,需要多個條件,今天又遇到一個,網(wǎng)上搜索了一下,也有同學(xué)和我遇到相同的問題,記錄一下
    2016-09-09
  • Django項目中model的數(shù)據(jù)處理以及頁面交互方法

    Django項目中model的數(shù)據(jù)處理以及頁面交互方法

    今天小編就為大家分享一篇Django項目中model的數(shù)據(jù)處理以及頁面交互方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python進階學(xué)習(xí)之你真的懂元組嗎?

    Python進階學(xué)習(xí)之你真的懂元組嗎?

    在我們學(xué)習(xí)python的過程中,對元組的介紹通常是成為”不可變的列表“,但是這其實并沒有完全的概括元組的功能。在本文中,我們將會介紹元組作為記錄的功能,話不多說我們開始吧
    2023-04-04
  • Python使用pygame模塊編寫俄羅斯方塊游戲的代碼實例

    Python使用pygame模塊編寫俄羅斯方塊游戲的代碼實例

    這篇文章主要介紹了Python使用pygame模塊編寫俄羅斯方塊游戲的代碼實例,最基本的方塊變換和行消除等功能都在代碼中一一體現(xiàn),需要的朋友可以參考下
    2015-12-12
  • python自動化生成IOS的圖標

    python自動化生成IOS的圖標

    這篇文章主要為大家詳細介紹了python如何自動化生成IOS的圖標,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11

最新評論