常見問題:管理介面¶
我無法登入。當我輸入有效的用戶名和密碼時,它只是再次顯示登入頁面,且沒有任何錯誤訊息。¶
登入 Cookie 沒有被正確設定,因為 Django 發出的 Cookie 網域與瀏覽器中的網域不符。試著設定 SESSION_COOKIE_DOMAIN
設定以符合您的網域。例如,如果您在瀏覽器中輸入「https://www.example.com/admin/」,請設定 SESSION_COOKIE_DOMAIN = 'www.example.com'
。
我無法登入。當我輸入有效的用戶名和密碼時,它再次顯示登入頁面,並顯示「請輸入正確的用戶名和密碼」的錯誤訊息。¶
如果您確定您的用戶名和密碼正確,請確保您的使用者帳戶的 is_active
和 is_staff
都設定為 True。管理介面只允許這兩個欄位都設定為 True 的使用者存取。
我如何在管理介面中自動將欄位的值設定為最後編輯該物件的使用者?¶
ModelAdmin
類別提供了自訂掛鉤,可讓您在儲存物件時,使用來自請求的詳細資料來轉換物件。透過從請求中提取目前使用者,並自訂 save_model()
掛鉤,您可以更新物件以反映編輯它的使用者。有關範例,請參閱 ModelAdmin 方法的文件。
我如何限制管理員存取,以便只有建立物件的使用者才能編輯它們?¶
ModelAdmin
類別也提供自訂掛鉤,可讓您控制管理介面中物件的可見性和可編輯性。使用從請求中提取使用者的相同技巧,get_queryset()
和 has_change_permission()
可以用來控制管理介面中物件的可見性和可編輯性。
我的管理網站 CSS 和圖片在使用開發伺服器時顯示正常,但在使用 mod_wsgi 時卻沒有顯示。¶
請參閱「如何將 Django 與 mod_wsgi 一起使用」文件中的 提供管理檔案。
我的「list_filter」包含一個 ManyToManyField,但篩選器沒有顯示。¶
如果沒有相關物件,Django 不會費心顯示 ManyToManyField
的篩選器。
例如,如果您的 list_filter
包含 sites,且資料庫中沒有任何網站,則不會顯示「網站」篩選器。在這種情況下,按網站篩選將沒有意義。
有些物件沒有出現在管理介面中。¶
不一致的列數可能是由於缺少外鍵值或外鍵欄位錯誤地設定為 null=False
所導致。如果您的記錄中有一個 ForeignKey
指向不存在的物件,並且該外鍵包含在 list_display
中,則該記錄將不會顯示在管理變更清單中,因為 Django 模型宣告了在資料庫層級沒有實作的完整性限制。
我如何自訂管理介面的功能?¶
您有幾個選項。如果您想在 Django 自動產生的新增/變更表單之上進行擴充,您可以透過模型的 Admin 類別 js 參數 將任意 JavaScript 模組附加到頁面。該參數是一個 URL 清單(以字串表示),指向將透過 <script>
標籤包含在管理表單中的 JavaScript 模組。
如果您想要比調整自動產生的表單所能實現的更大的彈性,請隨意為管理介面編寫自訂視圖。管理介面本身是由 Django 驅動的,您可以編寫自訂視圖,這些視圖會掛接到驗證系統、檢查權限並執行它們需要執行的任何其他操作。
如果您想自訂管理介面的外觀,請閱讀下一個問題。
動態產生的管理網站很醜!我該如何更改它?¶
我們喜歡它,但如果您不同意,您可以透過編輯 CSS 樣式表和/或相關的圖像檔案來修改管理網站的呈現方式。該網站是使用語意 HTML 和大量的 CSS 掛鉤構建的,因此您想做的任何更改都可以透過編輯樣式表來實現。
管理介面支援哪些瀏覽器?¶
管理介面為最新版本的現代、符合網路標準的瀏覽器提供完整的功能體驗。在桌面上,這表示 Chrome、Edge、Firefox、Opera、Safari 和其他瀏覽器。
在行動裝置和平板電腦上,管理介面為符合網路標準的瀏覽器提供回應式體驗。這包括 Android 和 iOS 上的主要瀏覽器。
根據功能支援,瀏覽器之間可能會有細微的樣式差異。這些都被視為可接受的渲染變化。
管理介面支援哪些輔助技術?¶
管理介面旨在與各種輔助技術相容,但目前存在許多障礙。支援目標是所有主要輔助技術的最新版本,包括 Dragon、JAWS、NVDA、Orca、TalkBack、語音控制、iOS 上的 VoiceOver、macOS 上的 VoiceOver、Windows 對比佈景主題、ZoomText 和螢幕放大鏡。