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能做到的。但是它存在以下問題:

  1. 業務邏輯不直觀。它這種以資料庫表為核心展開操作,對於非程序員或者業務框架理解不深的人而言是個小挑戰。有時候一個業務修改要改多個地方,比如增加商品,你可能需要先添加分類,添加屬性之後才能再添加商品,多處跳轉使用起來不方便。
  2. 使用效率不高。界面很簡陋,交互很原始。
  3. 修改比較麻煩且不好維護。退一步講,你決定接受上面兩個問題了,但你的業務確實比較複雜,不得不修改代碼了,會發現要修改的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 開發的知名站點有哪些?

TAG:Web開發 | Django框架 | Python開發 |