Django 學習(03 Django應用-admin後臺管理系統)

因爲這個是個投票系統、有客戶頁面就應該有供管理員使用的後臺管理系統。

而Django框架提供了一個基於項目model創建的一個後臺管理站點admin。這個界面只給站點管理員使用,並不對大衆開放。 雖然不是很美觀、但是卻是現成的、且功能可定製。

1. 創建admin用戶

$ python manage.py createsuperuser

根據系統提示輸入用戶名、郵箱、密碼。

2. 進入admin後臺管理系統

服務器啓動後,在瀏覽器訪問http://127.0.0.1:8000/admin/。理論上你就能看到admin的登陸界面了:

但我並不幸運、、、

首先瀏覽器並沒有顯示登陸頁面、而是隻展示了一行提示:

“A server error occurred. Please contact the administrator.”

看後後臺有多個報錯、分爲兩種:

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 9737: illegal multibyte sequence
for url_pattern in reversed(self.url_patterns):
TypeError: 'set' object is not reversible

哎、、、、、欲語淚先流

一個一個解決吧、第一個報錯是編碼的問題,貌似是django的bug。

上網查了查、這個報錯影響到瀏覽器端無法顯示報錯信息。

那先把這個修了吧

根據提示找到 python安裝路徑\Lib\site-packages\django\views\debug.py ,打開後,修改約在 332 行處,將:

with Path(CURRENT_DIR, 'templates', 'technical_500.html').open() as fh:

修改爲

with Path(CURRENT_DIR, 'templates', 'technical_500.html').open(encoding='utf-8') as fh:

重啓後就好了。

這下報錯可以在瀏覽器中展示了。

然後就看到了第二個錯的詳細信息、、、、

 

報錯說urlpatterns不可逆轉。看了下項目創建的urls.py
urlpatterns = {
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
}

這個urlpatterns是字典、字典無序、所以不可逆轉。。。。。

這尼瑪不是自動創建的嗎、、、

按照度娘上的說法、在應用下的urls.py和app下的urls.py都應該改爲urlpatterns= [ ] 即可。

終於看到登錄頁面了、、、

迴歸正題、開始登錄、成功啦~~~~

然後把後臺管理界面改個路由地址,隱藏一下、無敵

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('34thssk/', admin.site.urls),
]

現在進來的後臺管理系統中只有兩個部分可以進行操作,groups和users。

它們是django.contrib.auth模塊提供的身份認證框架。

3. 後臺管理系統中註冊投票應用

先在admin中進行註冊,告訴admin站點,請將polls的模型加入站點內,接受站點的管理。

打開polls/admin.py文件,加入下面的內容:

from django.contrib import admin
from .models import Question

admin.site.register(Question)

4. 後臺管理系統功能

點擊“Questions”,進入questions的修改列表頁面。這個頁面會顯示所有的數據庫內的questions對象,你可以在這裏對它們進行修改。看到下面的“What’s up?”了麼?它就是我們先前創建的一個question對象,並且通過__str__方法的幫助,顯示了較爲直觀的信息。

image

下面,點擊What’s up?進入編輯界面:

image

這裏需要注意的是:

  • 頁面中的表單是由Question模型自動生成的。
  • 不同的模型字段類型(DateTimeField, CharField)會表現爲不同的HTML input框類型。
  • 每一個DateTimeField都會自動生成一個可點擊鏈接。日期是Today,並有一個日曆彈出框;時間是Now,並有一個通用的時間輸入列表框。

在頁面的底部,則是一些可選項按鈕:

  • delete:彈出一個刪除確認頁面
  • save and add another:保存當前修改,並加載一個新的空白的當前類型對象的表單。
  • save and continue editing:保存當前修改,並重新加載該對象的編輯頁面。
  • save:保存修改,返回當前對象類型的列表頁面。

如果Date published字段的值和你在前面教程創建它的時候不一致,可能是你沒有正確的配置TIME_ZONE,在國內,通常是8個小時的時間差別。修改TIME_ZONE配置並重新加載頁面,就能顯示正確的時間了。

在頁面的右上角,點擊History按鈕,你會看到你對當前對象的所有修改操作都在這裏有記錄,包括修改時間和操作人員,如下圖所示:

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章