哈嘍大家好,我是鹹魚
相信使用過 Django 的小夥伴都知道 Django 有一個預設的後臺管理系統——Django Admin
它的 UI 很多年都沒有發生過變化,現在看來顯得有些「過時且簡陋」
那為什麼 Django 的維護者卻不去優化一下呢?原文作者去詢問了多位維護者瞭解了其歷史和」為什麼這麼設計「
下面讓我們來一起看下
當我在 Djangocon US 上跟別人交流時,一個問題總是不斷被提及:「為什麼 Django Admin 那麼的 ’醜陋‘ ?」
Djangocon US 是一個為期五天的國際會議,由 Django web 框架社群舉辦,每年在北美舉行
在這個會議上,從全世界各地而來的 Django 開發者都能夠學到使用 Django 構建的各種應用程式的細節,深入理解已經熟悉的概念
我在這裡解釋一下,請原諒這個標題是為了引人注意才起的,但這個問題有很多種形式:
作為一個老前輩(我第一次參加 Djangocon 是 2012 年,可以說是一個世紀以前的 web 開發時代),我的答案是:Django Admin 這麼」醜陋「是為了阻止你把它交給客戶或者終端使用者
Janelle 想知道真正的答案,為了不讓她失望,我接受了她的挑戰。我四處尋找,穿過廣闊的會議室和筆記型電腦螢幕,尋求 Django 維護者的智慧,我從一名老師變成了學生
」Django Admin 並不醜。更確切地說,(Django 維護者們)並沒有努力讓它成為一個漂亮的終端使用者工具「 ,Ken Whitesell 說
Ken Whitesell 是 Django 的長期使用者,也是 Django 社群中的常客,他從 1.2 版本開始就開始使用 Django,Ken 接著指出,問題的答案就在 Django 檔案中顯眼的位置:
」Django Admin 的用途僅限於組織的內部管理工具,它不是用來構建整個前端的「
Ken 還說這個問題在 Django 論壇中一次又一次地出現(https://forum.djangoproject.com/search?q=The admin's recommended use is limited to an organization's internal management tool)
所以 Ken 的回答讓我知道了 」how「 ,我現在想知道 」why「:為什麼 Django admin 故意被設計成這樣
」Django admin 是為 Phil 構建的「,Jacob Kaplan-Moss說
Django 的共同建立者 Jacob 給了我漂亮的答案,Phil 指的是 Phil Cauthon,Phil 當時是 Lawrence.com 週報的編輯,這是有史以來最早建立的 Django 網站之一
因為 Django 最初是用於製作線上新聞 Web 站點,Django admin 由內部人員使用,內部人員知道該如何使用它。」如果某些內容被編輯或搞砸了,你可以走到別人的辦公桌前,問‘你為什麼這麼做?’ 」Jacob 講述了最初的 Django 管理工作流程
Ken 和 Jacob 都達成了共識,這也與我的答案一致,Django admin 更多的是組織管理和信任。
你可以在管理/組織/政治上控制誰使用 Django admin 以及他們用 Django admin做什麼,你對員工有一定程度的信任。你不需要投入時間和精力使 Django admin成為面向客戶的工具,供不熟悉您的產品的人使用
」甚至在 0.9x 版本中,我們會發現一張圖片上面寫著:Django admin不是你的應用程式「,Curtis Maloney 說
Curtis Maloney 在網上被稱為 FunkyBob,他回憶起 Django 早期的時候說,」甚至在 0.9x 版本中,我們會發現一張圖片上面寫著:Admin 不是你的應用程式「
Curtis 和我都認為 Django admin 是一個很棒的資料庫工具,而且大家也應該這樣去對待它
正如 Curtis 所說,」鼓勵大家去構建自己的管理介面,並把 Django admin 當作一個資料庫管理工具,這為很多人節省了痛苦,客製化它的努力比回報快得多「
總之,Django admin 仍是人類使用的工具,所以我們應該繼續改進它讓它更容易存取
最後,如果你發現需要將 Django admin 交給客戶或者終端使用者,請考慮使用 Wagtail ModelAdmin,它幾乎跟 Django admin 一模一樣(而且與現有的 Django admin 一起執行)
Wagtail ModelAdmin 具有巨大的可存取性、細粒度的控制和為非技術終端使用者構建的良好的使用者體驗
原文連結:https://www.coderedcorp.com/blog/why-is-the-django-admin-ugly/