Python Django 開發web,是重寫的admin,還是用自帶的admin?
我最近想用Python寫一套web管理後台,發現Django自帶了admin後台,可是很單調,都說Django後台很厲害,可是後台的功能少的可憐
那麼,後台管理是自己寫?還是修改默認的admin讓他更加完善 ?
主要看你是什麼需求,以及你對django admin的理解。
我說說我用到/經歷的幾個場景:
一、簡單的數據管理後台,帶許可權
這種場景下,基本上就是擼出Model,配置admin.py,接入SSO登錄,創建個許可權組,部署好,丟給產品(產品內心OS:喂,我原型還沒畫好呢 -- 玩笑: )逃)
二、複雜的頁面定製,額外的許可權邏輯
這種情況下,我們基本上是基於django的admin重寫了展示層的邏輯,重點在:admin.ModelAdmin的重寫,以及template的重寫。許可權的話,自定義基礎的modeladmin,重寫許可權部分邏輯。
三、只要求好看,好用的後台,什麼結果,工程師說了算。
現在基本就是這種模式了,目前我們還是基於xadmin來開發,開發速度跟用自帶的admin差不多,需要做的就是理解它放開了哪些介面給你,讓你能方便的定製。
總結下,上面說的是需求,另外一部分,還得說對django admin的掌握,因為你得了解需求跟框架能力能不能匹配。
還是說說我自己的經驗,django admin的代碼我在之前定製後台階段,基本都看了(沒辦法,文檔太少),xadmin的代碼也是一樣,所以要是我拿到需求,如果是內容管理系統開發的需求,肯定還是基於admin或者xadmin來做,因為我知道他們提供了哪些能力給我,我只需要基於這些能力稍作發揮即可。
最後說一句:一個好的框架一定會把需要經常變動的部分給你留好介面,便於自己來實現。從這點上考慮,django admin以及xadmin還是挺好的。(當然,除了文檔)
看是不是滿足需求或者接近需求,不然還是重新寫一些比較好一點(當然你足夠熟悉django admin,另一說法)。改django admin 也不算複雜。
自帶的admin強大的地方在於快速開發,對於後台常見的增刪改查,排序,篩選等操作,你都可以不用涉及html和js的基礎快速完成,而且python代碼還很優雅,這目前我暫時未發現其他admin能做到的。但是它存在以下問題:
- 業務邏輯不直觀。它這種以資料庫表為核心展開操作,對於非程序員或者業務框架理解不深的人而言是個小挑戰。有時候一個業務修改要改多個地方,比如增加商品,你可能需要先添加分類,添加屬性之後才能再添加商品,多處跳轉使用起來不方便。
- 使用效率不高。界面很簡陋,交互很原始。
- 修改比較麻煩且不好維護。退一步講,你決定接受上面兩個問題了,但你的業務確實比較複雜,不得不修改代碼了,會發現要修改的html模板有點像黑魔法,要引入先進的js框架庫也比較麻煩,你最後不得不用回jQuery。
上面這三點問題如果對於你的後台而言是不存在的,請大膽的用自帶的admin,否則自己前後端分離搞一個也不會花多少時間的。對於公司的項目而言,我建議公司內部用的後台或者內容管理類後台用django的admin寫,畢竟效率優先。如果是外部用的中台系統,建議還是自己擼一個。
以前用自帶的admin,後來嫌界面太丑,用了xadmin,後來發現不能支持3,轉到了flask-admin,一看功能少的可憐,乾脆就用vue+flask擼一套了,目前正在擼。
所以對界面沒要求,可以用自帶admin,也可以自己改頁面。
懶得改的話可以用xadmin。可是這些template裡面,各種繼承,引用,還有宏,導致幾乎不能打包給前端去開發了,最後界面工作也只能自己弄。而且我們還想要更複雜的功能,統計,財務,報表之類的,所以最後決定自己擼。我覺得自帶的admin,像一個高級的資料庫GUI工具,在裡面開發複雜的功能,限制太多。不如開發一個複雜工具,然後將那個簡單的功能集成進來。
雖然我當初,只是想寫一個從sql到adminModel的工具,然後一步步滑到了這裡,攤手…自帶的admin其實可以魔改的。
xadmin坑不少
自己擼,基本上沒用過admin
正常來說,
如果前後端分離,admin是用不到。如果不是的話,
可能會不太好做一些特製功能。admin酷在哪?
是你可以很直接對模型進行處理,外鍵處理也做得特別好。另外也可以直接做一些功能。
比如富文本,批量上傳,他人提到的類如xadmin也是挺不錯。如果說admin單調,大抵是還沒摸過框架。可以看下文檔。一般都不會用自帶的吧,最低也是用xadmin之類的
推薦閱讀:
※Vim 中如何對 Python 進行代碼補全?
※django怎麼讀?
※用Django學習設計網站後台有什麼好書可以入門和深入學習?
※Django中提示TemplateDoesNotExist?
※國內用 Django 開發的知名站點有哪些?
