做國外服務(wù)器網(wǎng)站嗎外鏈網(wǎng)站大全
Django最大的優(yōu)點之一,就是體貼的提供了一個基于項目model創(chuàng)建的一個后臺管理站點admin。這個界面只給站點管理員使用,并不對大眾開放。雖然admin的界面可能不是那么美觀,功能不是那么強大,內(nèi)容不一定符合你的要求,但是它是免費的、現(xiàn)成的,并且還是可定制的,有完善的幫助文檔.
?
如果對admin的界面美觀有切實需求,可以嘗試使用simpleui庫,不要用xadmin.
創(chuàng)建管理員用戶
首先,我們需要通過下面的命令,創(chuàng)建一個可以登錄admin站點的用戶:
python manage.py createsuperuser
輸入用戶名:
Username: admin
輸入郵箱地址
Email address: xxx@xxx.xxx
輸入密碼:
Password: **********
Password (again): *********
Superuser created successfully.
注意:Django1.10版本后,超級用戶的密碼要求具備一定的復(fù)雜性,如果密碼強度不夠,Django會提示你,但是可以強制通過。
啟動開發(fā)服務(wù)器
執(zhí)行runserver命令啟動服務(wù)器后,在瀏覽器訪問http://127.0.0.1:8000/admin/。你就能看到admin的登陸界面了:
?
小技巧:
??在實際環(huán)境中,為了站點的安全性,我們一般不能將管理后臺的url隨便暴露給他人,不能用/admin/這么簡單的路徑。
可以將根url路由文件mysite/urls.py
中admin.site.urls
對應(yīng)的表達式,換成你想要的,
比如
from django.contrib import admin from django.urls import path
urlpatterns = [ path('control/', admin.site.urls),
]
這樣,我們必須訪問http://127.0.0.1:8000/control/才能進入admin界面。
進入站點
利用剛才建立的admin賬戶,登陸admin,你將看到如下的界面:
當前只有兩個可編輯的模型:Groups和Users。它們是django.contrib.auth模塊提供的身份認證框架內(nèi)的模型。
注冊app
現(xiàn)在還無法看到投票應(yīng)用,必須先在admin中進行注冊,告訴admin站點,請將polls的模型加入站點內(nèi),接受站點的管理。
打開polls/admin.py文件,加入下面的內(nèi)容:
from django.contrib import admin
from .models import Questionadmin.site.register(Question)
站點體驗
注冊question模型后,等待服務(wù)器重啟動,然后刷新admin頁面就能看到Question欄目了。
這里需要注意的是:
- 頁面中的表單是由Question模型自動生成的。
- 不同的模型字段類型(DateTimeField, CharField)會表現(xiàn)為不同的HTML input框類型。
- 每一個DateTimeField都會自動生成一個可點擊鏈接。日期是Today,并有一個日歷彈出框;時間是Now,并有一個通用的時間輸入列表框。
在頁面的底部,則是一些可選項按鈕:
- delete:彈出一個刪除確認頁面
- save and add another:保存當前修改,并加載一個新的空白的當前類型對象的表單。
- save and continue editing:保存當前修改,并重新加載該對象的編輯頁面。
- save:保存修改,返回當前對象類型的列表頁面。
如果Date published字段的值和你在前面教程創(chuàng)建它的時候不一致,可能是你沒有正確的配置TIME_ZONE,在國內(nèi),通常是8個小時的時間差別。修改TIME_ZONE配置并重新加載頁面,就能顯示正確的時間了。
自定義 admin
?
??Django的admin站點是自動生成的、高度可定制的,它是Django相較其它Web框架獨有的內(nèi)容,廣受歡迎。如果你覺得它不夠美觀,還有第三方美化版simpleUI。請一定不要忽略它,相信我,它值得擁有!
自定義后臺表單
??通過admin.site.register(Question)語句,我們在admin站點中注冊了Question模型。Django會自動生成一個該模型的默認表單頁面。如果你想自定義該頁面的外觀和工作方式,可以在注冊對象的時候告訴Django你的自定義選項。
下面是一個修改admin表單默認排序方式的例子。修改appName/admin.py的代碼:
from django.contrib import admin
from .models import Questionclass QuestionAdmin(admin.ModelAdmin):fields = ['pub_date', 'question_text']admin.site.register(Question, QuestionAdmin)
你只需要創(chuàng)建一個繼承admin.ModelAdmin的模型管理類,在其中進行一些自定義操作,然后將它作為第二個參數(shù)傳遞給admin.site.register(),第一個參數(shù)則是Question模型本身。
上面的修改讓Date Published字段顯示在Question字段前面了(默認是在后面)。
對于只有2個字段的情況,效果看起來還不是很明顯,但是如果你有很多的字段,選擇一種直觀的符合我們?nèi)祟惲晳T的排序方式則非常有用。
但是,當表單含有大量字段的時候,你更多的是想將表單劃分為一些字段的集合。
?
??