999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Django和Vue的低代碼平臺(tái)構(gòu)建

2024-03-03 12:24:08張良峰
數(shù)字通信世界 2024年1期

摘要:文章主要介紹了一種基于Django和Vue的低代碼平臺(tái)構(gòu)建方案。首先闡述本低代碼平臺(tái)采用的前后端技術(shù)框架,接著分析了后端API代碼結(jié)構(gòu)和前端UI的代碼結(jié)構(gòu)以及自動(dòng)化代碼構(gòu)建的原理,然后提出了本低代碼平臺(tái)的構(gòu)建方案和詳細(xì)步驟,最后給出了具體的應(yīng)用實(shí)例驗(yàn)證。

關(guān)鍵詞:Django;Vue;低代碼平臺(tái);自動(dòng)化構(gòu)建

doi:10.3969/J.ISSN.1672-7274.2024.01.015

中圖分類號(hào):TP 393.09? ? ? ? ? ? 文獻(xiàn)標(biāo)志碼:B? ? ? ? ? ? 文章編碼:1672-7274(2024)01-00-04

Building a Low Code Platform Based on Django and Vue

ZHANG Liangfeng

(Hainan Vocational and Technical College of Economics and Trade, Haikou 571127, China)

Abstract: The article mainly introduces a low code platform construction solution based on Django and Vue. Firstly, the front-end and back-end technical framework adopted by this low code platform is elaborated, and the code structure of the back-end API and front-end UI, as well as the principles of automated code construction, are analyzed. Subsequently, a construction plan and detailed steps for this low code platform were proposed, and specific application examples were provided for verification.

Key words: Django; Vue; low code platform; automated build

低代碼平臺(tái)是一種通過可視化界面、拖曳組件等方式快速開發(fā)Web應(yīng)用的平臺(tái)。它將應(yīng)用開發(fā)的復(fù)雜性封裝在平臺(tái)內(nèi)部,降低了開發(fā)人員的入門門檻和開發(fā)難度,讓更多非專業(yè)開發(fā)人員也能夠快速實(shí)現(xiàn)Web應(yīng)用的開發(fā)。低代碼平臺(tái)的作用主要體現(xiàn)在增加應(yīng)用開發(fā)的效率、加快應(yīng)用部署的時(shí)間、降低應(yīng)用開發(fā)的風(fēng)險(xiǎn)和成本[1]等幾個(gè)方面。

本文在前后端分離的Web開發(fā)模式下,整合后端Django Restful Framework(DRF)框架和前端d2-crud-x框架,以表單模型為驅(qū)動(dòng),利用模板技術(shù)自動(dòng)化構(gòu)建代碼,搭建低代碼平臺(tái)。

1? ?技術(shù)框架分析

1.1 后端框架分析

在前后端分離的Web開發(fā)模式下[2]開發(fā)REST API時(shí),有兩個(gè)重要部分。

(1)序列化與反序列化:將Python對象(如模型實(shí)例)序列化成JSON、XML等格式,然后將其傳輸?shù)娇蛻舳嘶蚍葱蛄谢蒔ython對象供視圖使用。

(2)視圖:每個(gè)視圖具體操作的數(shù)據(jù)不同,但增、刪、改、查的實(shí)現(xiàn)流程基本套路化。增:校驗(yàn)請求數(shù)據(jù)→執(zhí)行反序列化過程→保存數(shù)據(jù)庫→將保存的對象序列化并返回;刪:判斷要?jiǎng)h除的數(shù)據(jù)是否存在→執(zhí)行數(shù)據(jù)庫刪除;改:判斷要修改的數(shù)據(jù)是否存在→校驗(yàn)請求的數(shù)據(jù)→執(zhí)行反序列化過程→保存數(shù)據(jù)庫→將保存的對象序列化并返回;查:查詢數(shù)據(jù)庫→將數(shù)據(jù)序列化并返回。

DRF是一個(gè)基于Django框架的RESTful API開發(fā)框架。

models.py和定義視圖函數(shù)的views.py文件,并定義與views.py中ViewSet配套的定義路由的urls.py。models.py文件必須根據(jù)具體業(yè)務(wù)需求來手工創(chuàng)建,但是,基于models.py提供的模型類和字段定義,我們可以通過定義代碼模板,替換占位符${placeholder},在serializers.py和views.py中自動(dòng)化構(gòu)建Serializer和ViewSet代碼,并在urls.py中自動(dòng)生成路由。上述的代碼文件的模板定義如下。

(1)Serializer模板。

class ${placeholder}Serializer(BaseModelSerializer):

class Meta:

model = ${placeholder}

fields = '__all__'

(2)ViewSet模板。

class ${placeholder}ViewSet(ModelViewSet):

queryset = ${placeholder}.objects.all()

serializer_class = ${placeholder}Serializer

(3)urls.py模板。

system_url = routers.SimpleRouter()

${placeholder}

urlpatterns = []

urlpatterns += system_url.urls

1.2 前端框架分析

d2-crud-x是一種基于Vue框架的前端UI組件庫,它能夠自動(dòng)化構(gòu)建CRUD界面,支持搜索、篩選、排序、分頁等功能。

d2-crud-x可以根據(jù)models.py中的模型自動(dòng)化構(gòu)建前端UI代碼。通過在api.js中定義API接口,使用crud.js中的方法調(diào)用接口,在index.vue中定義表格和表單等組件,即可實(shí)現(xiàn)CRUD界面的搭建。相關(guān)代碼文件的模板定義如下。

(1)api.js模板。

import { request } from '@/api/service'

export const urlPrefix = '/api/${placeholder}/'

export function GetList(query) {

return request({

url: urlPrefix,

method: 'get',

params: query

})}#AddObj/UpdateObj/DelObj(id)類似

(2)index.vue模板。

export default {

name: '${modelname}',

mixins: [d2CrudPlus.crud], // 最核心部分,繼承d2CrudPlus.crud

methods: {

getCrudOptions () {

return crudOptions(this)

},

pageRequest (query) {

return GetList(query)

}, // 數(shù)據(jù)請求,添加請求,修改請求,刪除請求類似

}}

(3)crud.js模板。

columns: [{

title: "ID",

key: "id",

},

${placeholder}]

2? ?低代碼平臺(tái)構(gòu)建方案

本低代碼平臺(tái)的構(gòu)建方案分為以下步驟。

2.1 構(gòu)建項(xiàng)目工程

使用Django的腳手架django-admin startproject構(gòu)建Django項(xiàng)目工程。在工程中,我們需要引入用戶、角色、部門、菜單和權(quán)限管理模型,加入setting.py文件的INSTALLED_APPS中。這樣,就可以實(shí)現(xiàn)用戶、角色、部門和權(quán)限管理相關(guān)功能的自動(dòng)化構(gòu)建。

2.2 構(gòu)建應(yīng)用,編輯數(shù)據(jù)模型,自動(dòng)化生成后端應(yīng)用代碼

使用Django的腳手架django-admin startapp構(gòu)建應(yīng)用。在應(yīng)用中,我們需要根據(jù)業(yè)務(wù)需求抽象并設(shè)計(jì)數(shù)據(jù)表,將其編寫為models.py的數(shù)據(jù)模型與字段定義,然后利用模板自動(dòng)生成后端ViewSet、Serializer和urls的python代碼。在Django應(yīng)用setting和urls中添加新創(chuàng)建的應(yīng)用后,使用Django的腳手架makemigrations和migrate完成數(shù)據(jù)庫的創(chuàng)建和數(shù)據(jù)遷移,后端應(yīng)用API就自動(dòng)化構(gòu)建完成了。

2.3 生成前端代碼

根據(jù)models.py的數(shù)據(jù)模型與字段定義,利用模板自動(dòng)化生成前端api.js、crud.js和index.vue代碼同樣可以省時(shí)省力。通過使用d2-crud-x提供的模板[3],我們可以快速地生成這些代碼,并根據(jù)業(yè)務(wù)需求進(jìn)行自定義修改,實(shí)現(xiàn)前端UI的自動(dòng)化構(gòu)建[4]。

2.4 添加菜單和權(quán)限

獲取models.py的類名與字段:MyClass= getattr(module, model);構(gòu)建菜單對應(yīng)的頁面名稱;MyClass._meta.verbose_name[0:-1]+'管理';頁面訪問路徑:"/"+model.lower(),Vue組件名稱model.lower();組件文件路徑:appName+"/"+model.lower();api接口路徑:r"/api/"+appName+r"/"+model.lower()+r"/"。將上述參數(shù)構(gòu)造成初始化腳本init_menu.json,通過Django.db.models提供的ORM機(jī)制加載入庫,實(shí)現(xiàn)前端動(dòng)態(tài)加載新創(chuàng)建的應(yīng)用頁面菜單。

2.5 啟動(dòng)后端

使用python manager.py runserver 0.0.0.0:8000啟動(dòng)后端API接口服務(wù)。

2.6 配置nginx

在nginx配置文件中,配置好端口和前后端服務(wù)路徑。

2.7 發(fā)布前端

使用npm run build構(gòu)建前端Web應(yīng)用,將構(gòu)建好的代碼移入提前配置的nginx對應(yīng)目錄下,啟動(dòng)nginx即可啟動(dòng)低代碼平臺(tái)。

2.8 擴(kuò)展應(yīng)用

在啟動(dòng)后的低代碼平臺(tái)中,依據(jù)上述流程,可以根據(jù)業(yè)務(wù)發(fā)展需要維護(hù)和擴(kuò)展應(yīng)用。

3? ?應(yīng)用案例驗(yàn)證

3.1 案例需求

本案例是一個(gè)智慧校車的需求,要求校車司機(jī)上報(bào)校車的車輛位置,以便搭乘校車的教師查看校車到站情況(包括時(shí)間、距離等)。經(jīng)過業(yè)務(wù)抽象,后端數(shù)據(jù)模型如下。

(1)路線管理:路線id、路線名稱。

(2)站點(diǎn)管理:站點(diǎn)id、站點(diǎn)名稱、站點(diǎn)時(shí)間、站點(diǎn)順序。

(3)車輛管理:車輛id、車牌號(hào)碼。

(4)司機(jī)管理:司機(jī)id、司機(jī)姓名、司機(jī)手機(jī)號(hào)。

(5)排班管理:司機(jī)id、車輛id、路線id、排班日期。

命名應(yīng)用為mybus,將上述數(shù)據(jù)模型轉(zhuǎn)換為models.py,路線模型代碼如下。

class Route(models.Model):

name = models.CharField(null=False, max_length=32, verbose_name="線路名稱", help_text="線路名稱")

station = models.ManyToManyField(to="Station",verbose_name="站點(diǎn)名稱", db_constraint=False, help_text="站點(diǎn)名稱")

class Meta:

app_label = 'mybus'

db_table = "mybus_routes"

verbose_name = "路線表"

ordering = ("id",)

3.2 自動(dòng)化代碼構(gòu)建

以Serializer和ViewSet為例,模板中的占位符placeholder = Route,替換后即可生成路線管理對應(yīng)的views。

class RouteSerializer(BaseModelSerializer):

station_info = DynamicSerializerMethodField()

class Meta:

model = Route

fields = '__all__'

def get_station_info(self, instance, parsed_query):

stations = instance.station.all()

serializer = StationSerializer(

stations,

many=True,

parsed_query=parsed_query

return serializer.data

class RouteViewSet(CustomModelViewSet):

queryset = Route.objects.all()

serializer_class = RouteSerializer

對于urls.py,在模板中替換占位符為system_url.register(r'route', RouteViewSet)即可完成路線管理路徑的配置。

system_url = routers.SimpleRouter()

system_url.register(r'route', RouteViewSet)

system_url.register(r'station', StationViewSet)

system_url.register(r'bus', BusViewSet)

system_url.register(r'position', PositionViewSet)

system_url.register(r'dispatch', DispatchViewSet)

根據(jù)模型中的類名和字段名稱,依次替換前端api.js,crud.js和Index.vue中的對應(yīng)占位符,接口生成前端代碼。

3.3 構(gòu)建頁面菜單

根據(jù)模型中的類名和字段名稱構(gòu)建菜單配置文件。

{

"name": "mybus",

"children": [

{

"name": "路線管理",

"web_path": "/route",

"component": "mybus/route",

"component_name": "route",

"menu_button": [

{

"name": "路線列表",

"value": "Search",

"api": "/api/mybus/route/",

"method": 0

},]

}]

}

將配置導(dǎo)入數(shù)據(jù)庫,即可完成頁面菜單的配置。

3.4 應(yīng)用界面

代碼構(gòu)建完畢,添加菜單后,依次啟動(dòng)前后端服務(wù),訪問路線管理前端路徑,添加數(shù)據(jù),如圖1所示,即說明應(yīng)用服務(wù)成功。

4? ?結(jié)束語

本文介紹了基于Django和Vue的低代碼平臺(tái)構(gòu)建方案。該方案可以快速構(gòu)建Web應(yīng)用程序,并具有快速開發(fā)和部署、易于維護(hù)和自定義特性等優(yōu)點(diǎn)。我們通過一個(gè)實(shí)際案例驗(yàn)證了該方案的可行性,建議將其用于各種基于表單模型的Web應(yīng)用程序的開發(fā)中,并在此基礎(chǔ)上構(gòu)建易用性更強(qiáng)和自動(dòng)化程度更高的低代碼平臺(tái)。

參考文獻(xiàn)

[1] 康世杰,黃鶴.針對企業(yè)級應(yīng)用復(fù)雜性的低代碼開發(fā)平臺(tái)架構(gòu)[J].綿陽師范學(xué)院學(xué)報(bào),2023,42(2):86-93.

[2] 郭文學(xué).Web應(yīng)用快速開發(fā)工具設(shè)計(jì)與實(shí)現(xiàn)[D].濟(jì)南:山東大學(xué),2022.

[3] 閆丹丹.基于低代碼的管理系統(tǒng)模板庫的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2022.

[4] 周鑫磊.基于低代碼的前端關(guān)鍵技術(shù)研究與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2022.

基金項(xiàng)目:海南經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院“雙高計(jì)劃”院級科研項(xiàng)目(hnjmk2022209);數(shù)據(jù)服務(wù)與大數(shù)據(jù)技術(shù)應(yīng)用研究科研創(chuàng)新團(tuán)隊(duì)(HNJMT2022-201)。

作者簡介:張良峰(1982-),男,湖北天門人,碩士研究生,研究方向?yàn)檐浖夹g(shù)。

主站蜘蛛池模板: 欧美精品另类| 人妻丰满熟妇αv无码| 狠狠ⅴ日韩v欧美v天堂| 亚洲天堂网视频| 91极品美女高潮叫床在线观看| 国产精品冒白浆免费视频| 精品国产网| 国产无码高清视频不卡| 青青草国产精品久久久久| 日本一本正道综合久久dvd| 国产麻豆福利av在线播放| 国产一区二区三区免费观看| 国产成人禁片在线观看| 99精品视频九九精品| 一级福利视频| 午夜欧美理论2019理论| 欧美国产视频| 爆乳熟妇一区二区三区| 人妻无码中文字幕一区二区三区| 成人一区专区在线观看| 色老二精品视频在线观看| 国产毛片不卡| 91色在线观看| www.91在线播放| 日韩欧美色综合| 伊人久久婷婷| 亚洲精品国产精品乱码不卞| 久久久亚洲国产美女国产盗摄| 妇女自拍偷自拍亚洲精品| 天天综合色天天综合网| 日本国产在线| 国产国模一区二区三区四区| 亚洲aⅴ天堂| 国产成人亚洲综合A∨在线播放| 99人体免费视频| 日韩精品一区二区三区视频免费看| 欧美伊人色综合久久天天| 91久久夜色精品国产网站| 久久一日本道色综合久久| 国产亚洲欧美日韩在线一区二区三区| 国产流白浆视频| 国产在线啪| 91在线播放国产| 久久人搡人人玩人妻精品一| 欧美不卡视频在线| 香蕉蕉亚亚洲aav综合| 国产视频大全| 国产精品主播| 2021国产在线视频| 免费人成在线观看成人片| 欧美不卡视频一区发布| 国产经典在线观看一区| 国产精品免费入口视频| 在线中文字幕网| 漂亮人妻被中出中文字幕久久| 综合人妻久久一区二区精品 | 伊人久久精品亚洲午夜| 五月婷婷综合在线视频| 亚洲午夜福利精品无码不卡| 欧美亚洲国产精品第一页| 欧美亚洲综合免费精品高清在线观看 | 91久久国产综合精品女同我| 色有码无码视频| 成人在线视频一区| 91在线高清视频| 亚洲欧美激情小说另类| 大香伊人久久| 国产精品午夜福利麻豆| 欧美国产日韩一区二区三区精品影视| 精品精品国产高清A毛片| 亚洲精品大秀视频| 国产系列在线| 在线精品视频成人网| 国产日韩精品欧美一区灰| 亚洲欧美在线综合图区| 激情视频综合网| 午夜丁香婷婷| 啊嗯不日本网站| 亚洲AV人人澡人人双人| 成人久久精品一区二区三区| 中国国产高清免费AV片| 亚洲综合色婷婷中文字幕|