最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python django中如何使用restful框架

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

restful框架的使用

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

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

主要包含下面5個(gè)步驟:

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

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

3.加載Django REST Framework

4.序列化模型

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

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

創(chuàng)建django_rest

django-admin startproject django_rest

進(jìn)入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

注冊(cè)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)建后臺(tái)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ù)庫(kù)我們使用默認(rèn)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ù)庫(kù)遷移

python manage.py makemigrations 
python manage.py migrate

將Man這個(gè)model注冊(cè)到我們的后臺(tái),以便可以通過(guò)django的后臺(tái)做增刪查改,編寫admin.py如下

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

admin.site.register(Man)  # 注冊(cè)Man到后臺(tái)

啟動(dòng)django服務(wù)

python manage.py runserver

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

可以看到我們的rest_app下的模型man對(duì)象mans

我們添加一個(gè)那個(gè)男人lgd.ame

3. 加載Django REST Framework

安裝工具包

pip install djangorestframework

注冊(cè)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' #注冊(cè)
]

4.序列化模型

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

我們?cè)趓est_app下創(chuàng)建文件serializer.py

我們要做三件事:

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

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

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

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.通過(guò)不通的Man查詢數(shù)據(jù)庫(kù)

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

我們?cè)趓est_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     #對(duì)結(jié)果進(jìn)序列化

在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添加視圖路由,通過(guò)rest_framework中router確保我們的請(qǐng)求到正確的動(dòng)態(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'))
]

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

python manage.py runserver

訪問(wèn)http://127.0.0.1:8000/man/ 來(lái)查看man資源

通過(guò)id來(lái)訪問(wèn)api資源http://127.0.0.1:8000/man/1/

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

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

相關(guān)文章

  • python包導(dǎo)入的兩種方式

    python包導(dǎo)入的兩種方式

    本文主要介紹了python包導(dǎo)入的方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 在Python中處理字符串之ljust()方法的使用簡(jiǎn)介

    在Python中處理字符串之ljust()方法的使用簡(jiǎn)介

    這篇文章主要介紹了在Python中處理字符串之ljust()方法的使用,是Python學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • Python tkinter進(jìn)度條控件(Progressbar)的使用

    Python tkinter進(jìn)度條控件(Progressbar)的使用

    這篇文章主要介紹了Python tkinter進(jìn)度條控件(Progressbar)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python pandas如何根據(jù)指定條件篩選數(shù)據(jù)

    Python pandas如何根據(jù)指定條件篩選數(shù)據(jù)

    這篇文章主要介紹了Python pandas如何根據(jù)指定條件篩選數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python基礎(chǔ)之numpy庫(kù)的使用

    Python基礎(chǔ)之numpy庫(kù)的使用

    這篇文章主要介紹了Python基礎(chǔ)之numpy庫(kù)的使用,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 使用python?AI快速比對(duì)兩張人臉圖像及遇到的坑

    使用python?AI快速比對(duì)兩張人臉圖像及遇到的坑

    這篇文章主要介紹了如何使用python?AI快速比對(duì)兩張人臉圖像?實(shí)現(xiàn)過(guò)程比較簡(jiǎn)單,但是第三方python依賴的安裝過(guò)程較為曲折,下面是通過(guò)實(shí)踐對(duì)比總結(jié)出來(lái)的能夠支持的幾個(gè)版本,避免大家踩坑,需要的朋友可以參考下
    2023-02-02
  • Python類和對(duì)象的定義與實(shí)際應(yīng)用案例分析

    Python類和對(duì)象的定義與實(shí)際應(yīng)用案例分析

    這篇文章主要介紹了Python類和對(duì)象的定義與實(shí)際應(yīng)用,結(jié)合三個(gè)具體案例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類與對(duì)象的定義、應(yīng)用、設(shè)計(jì)模式等相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • 使用SQLAlchemy操作數(shù)據(jù)庫(kù)表過(guò)程解析

    使用SQLAlchemy操作數(shù)據(jù)庫(kù)表過(guò)程解析

    這篇文章主要介紹了使用SQLAlchemy操作數(shù)據(jù)庫(kù)表過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python多線程操作實(shí)例

    python多線程操作實(shí)例

    這篇文章主要介紹了python多線程操作實(shí)例,本文先是講解了python多線程的相關(guān)知識(shí)、python多線程使用的兩種方法等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • Python引用(import)文件夾下的py文件的方法

    Python引用(import)文件夾下的py文件的方法

    這篇文章主要介紹了Python引用(import)文件夾下的py文件的方法,Python中比較特別,導(dǎo)入文件夾下的py文件,則這個(gè)目錄下必須要有一個(gè)__init__.py文件才可,需要的朋友可以參考下
    2014-08-08

最新評(píng)論

岱山县| 宾阳县| 迁西县| 揭西县| 南澳县| 华宁县| 依兰县| 全州县| 唐河县| 津市市| 衢州市| 九江县| 定远县| 南昌县| 海城市| 横峰县| 鸡西市| 开封市| 三明市| 洛南县| 济源市| 徐水县| 龙州县| 蚌埠市| 西畴县| 福清市| 宁强县| 旌德县| 永泰县| 乌海市| 台山市| 申扎县| 关岭| 桂阳县| 衡东县| 图木舒克市| 乌什县| 当涂县| 唐海县| 丰顺县| 翁牛特旗|