Django學(xué)習(xí)筆記:Admin

Admin基礎(chǔ)

admin后臺本質(zhì)上是Django給我們提供的一個app。

環(huán)境配置

admin依賴以下四個模塊泼菌,請確保它們存在于INSTALLED_APPS中:

django.contrib.auth

django.contrib.contenttypes

django.contrib.messages

django.contrib.sessions

并且要將django.contrib.admin加入到INSTALLED_APPS列表俏险。

創(chuàng)建超級用戶

python manage.py createsuperuser

要修改管理員的路由闸溃,安全起見婶芭,不能用默認(rèn)的admin/路徑。

修改超級用戶密碼

python manage.py shell

from django.contrib.auth.models import User

user = User.objects.get(username=’<用戶名>’)

user.set_password(‘<新密碼>’)

user.save()

python manage.py changepassword <用戶名>

#修改指定的用戶的密碼(提供用戶名)或修改當(dāng)前系統(tǒng)用戶密碼(不提供用戶名)

訪問Admin界面

http://localhost:8000/admin/

注冊數(shù)據(jù)表

在admin.py中:

admin.site.register(<表>) ????#一次只能注冊一個類



ModelAdmin類

對于每個模型坯苹,可創(chuàng)建一個對應(yīng)的ModelAdmin類,這個類的屬性就是模型的所有自定義設(shè)置摇天。

class <類名>Admin(admin.ModelAdmin):

? ??#設(shè)置ModelAdmin屬性...


admin.site.register(<表>, <表>Admin) ???????#將數(shù)據(jù)表和它的ModelAdmin類綁定注冊


@admin.register(<表>): ?????????????????????#第二種方法粹湃,裝飾器注冊

class <表>Admin(admin.ModelAdmin):

? ??#設(shè)置ModelAdmin屬性...


ModelAdmin的屬性

list_display

在實(shí)例的修改界面橫排顯示指定的字段。

list_display = (‘<字段1>’, ‘<字段2>’, ...)


list_filter

在實(shí)例的列表界面顯示一個FILTER右邊欄泉坐,用指定的字段進(jìn)行分類为鳄。

可分類的字段:BooleanField、CharField腕让、DateField孤钦、DateTimeField、IntegerField、ForeignKey偏形、ManyToManyField

list_filter = [‘<字段1>’, ‘<字段2>’, ...]


search_fields

在實(shí)例的列表界面添加搜索框静袖,在指定字段的范圍內(nèi)搜索。

search_fields = [‘<字段1>’, ‘<字段2>’, ...] ??????#字段為CharField和TextField


actions

一個包含自定義行為的列表壳猜。


actions_on_top

默認(rèn)為True勾徽,在頁面的列表上方顯示actions下拉框。


actions_on_bottom

默認(rèn)為False统扳,當(dāng)為True時喘帚,在頁面的列表下方顯示actions下拉框。


actions_selection_counter

默認(rèn)為True咒钟,在action下拉框右側(cè)顯示選中的對象數(shù)量吹由。


date_hierarchy

指定一個日期型字段,為頁面創(chuàng)建一個通過日期過濾對象的時間導(dǎo)航欄朱嘴。

date_hierarchy = ‘date’


empty_value_display

設(shè)置類中的空值字段的默認(rèn)顯示內(nèi)容(如None倾鲫,空字符串等),默認(rèn)是’-’萍嬉。

empty_value_display = ‘-empty-’

可以設(shè)置全局的字段空值的默認(rèn)顯示內(nèi)容:

admin.site.empty_value_display = ‘-empty-’?????#這是一行新代碼乌昔,并不在類中縮進(jìn)!


exclude

對指定的字段排除顯示壤追。

exclude = ('<字段1>',?‘<字段2>’, ...)


fields

指定顯示的字段磕道,其順序也是字段在Admin后臺顯示的順序。

fields?= ('<字段1>',?‘<字段2>’, ...)

可以組合元組行冰,讓幾個字段在同一行顯示溺蕉,如:

fields?= (?('<字段1>',?‘<字段2>’), ‘<字段3>’, ...)


fieldsets

根據(jù)字段對頁面進(jìn)行分組顯示,傳入二元元組悼做,其中每個元組代表一個分組疯特。

fieldsets = (

????(‘<分組標(biāo)題A>’, { ?????????????????????????#?<分組標(biāo)題>可用None表示無標(biāo)題

????????‘fields’: (‘<字段1>’, ‘<字段2>’, ...)

????????} ),

????(‘<分組標(biāo)題B>’, {

????????‘fields’: (‘<字段3>’,)

????} ),

????...

)

顯示樣式:

分組標(biāo)題A

字段1

字段2

...

分組標(biāo)題B

字段3

...

fields同樣可以組合元組,讓幾個字段在同一行顯示:

fields?= (?('<字段1>',?‘<字段2>’), ‘<字段3>’, ...)

跟’fields’同級別的屬性:

‘classes’: (‘wide’, ‘collaspe’)

一個包含額外CSS類的元組肛走,wide讓分組具備更寬的水平空間漓雅,collaspe將整個分組折疊。

‘description’

一個可選的額外說明文本朽色,放在每個分組的頂部故硅,如果內(nèi)部有HTML語法將不被轉(zhuǎn)義。


filter_horizontal

將指定的多對多字段分成水平兩部分顯示(默認(rèn)是一個選擇框)纵搁。


filter_vertical

將指定的多對多字段分成垂直兩部分顯示(默認(rèn)是一個選擇框)吃衅。


form

編寫自定義的ModelForm,用于添加/修改頁面的表單腾誉。


list_editable

指定在修改頁面中可以直接編輯的字段徘层,指定的字段將顯示為編輯框峻呕。

只能設(shè)置list_display中的字段。


list_max_show_all

指定一個數(shù)值趣效,當(dāng)列表元素總數(shù)大于該值時瘦癌,顯示為“show all”鏈接,默認(rèn)為200跷敬。


list_per_page

設(shè)置每頁顯示的元素個數(shù)讯私,默認(rèn)為100。


list_select_related

使用select_related()方法查詢數(shù)據(jù)西傀,可以減少數(shù)據(jù)庫訪問斤寇,默認(rèn)為False(只對ForeighKey字段調(diào)用),當(dāng)為True時始終調(diào)用拥褂。

可以傳入元組或列表娘锁,指定用select_related()查詢的字段。

list_select_related = (‘<字段1>’, ‘<字段2>’, ...)


ordering

設(shè)置排序方式饺鹃,傳入元組或列表莫秆。


radio_fields

用選項展示ForeighKey字段。


save_as

默認(rèn)為False悔详,顯示為“保存并添加另一個”按鈕镊屎,當(dāng)為True時變成“保存為新對象”按鈕。


save_as_continue

默認(rèn)為True茄螃,在保存新對象后跳轉(zhuǎn)到修改頁面缝驳,當(dāng)為False時,跳轉(zhuǎn)到元素列表頁面责蝠。


save_on_top

默認(rèn)為False,當(dāng)為True時萎庭,頁面頂部會提供同樣的一系列保存按鈕霜医。


show_full_result_count

默認(rèn)為True,顯示過濾后的對象的總數(shù)驳规,如“99 results (143 total)”肴敛,對整個表進(jìn)行count()操作,如果數(shù)據(jù)表很大吗购,會耗費(fèi)一定的資源医男;當(dāng)為False時顯示為“99 results (show all)“。


#將子表的數(shù)據(jù)放在主表數(shù)據(jù)中編輯捻勉,此時主表字段下面提供n組相關(guān)聯(lián)的子表字段

class <子表名>InLine(admin.StackedInLine): ??#可繼承admin.TabularInLine進(jìn)行扁平化顯示

????model = <子表名>

????extra = <編輯的子表數(shù)>


class <主表名>Admin(admin.ModelAdmin):

????inlines = [<子表名>InLine]



自定義Admin首頁

修改Admin頁面頂端的顯示文字:

在admin.py中:

django.contrib.admin.AdminSite.site_header = ‘xxx’


修改Admin首頁模板:

寫入”項目根目錄/templates/admin/base_site.html“的模板镀梭,見templates筆記第1頁。



自定義Admin的Action操作

Action操作用于修改大量的目標(biāo)踱启,可以編寫action函數(shù)來自定義該操作报账。

①在ModelAdmin類中添加屬性:

actions = [‘<函數(shù)名>’] ??????????????#將action函數(shù)預(yù)先添加到ModelAdmin中

②編寫action函數(shù)

action函數(shù)必須攜帶三個參數(shù):當(dāng)前的ModelAdmin研底、request、被選擇的QuerySet對象透罢。

在ModelAdmin類中繼續(xù)①的代碼:

def <函數(shù)名>(self, request, queryset): ?????#用self訪問ModelAdmin類本身

????for obj in queryset:

? ??????#對Queryset進(jìn)行修改...

????self.message_user(request, ‘xxxx’) ????#為操作添加提示信息榜晦,xxxx顯示為頁面頂部綠色行

<函數(shù)名>.short_description = ‘xxx’??????#對函數(shù)添加描述,顯示為Action下拉列表中的名稱羽圃,

下拉列表中默認(rèn)顯示為函數(shù)名


action函數(shù)的全站引用與禁用

admin.site.add_action(<函數(shù)名>) ?????????#將action函數(shù)作用于整個admin站點(diǎn)

admin.site.disable_action(<函數(shù)名>) ???????#將action函數(shù)全站禁用

#全站禁用的action函數(shù)也可以添加到某個ModelAdmin類的action屬性中乾胶,進(jìn)行顯式的引用

class <類名>Admin(admin.ModelAdmin):

????actions = None ?????????????????????#禁用該模型中的所有action函數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市朽寞,隨后出現(xiàn)的幾起案子识窿,更是在濱河造成了極大的恐慌,老刑警劉巖愁憔,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腕扶,死亡現(xiàn)場離奇詭異,居然都是意外死亡吨掌,警方通過查閱死者的電腦和手機(jī)半抱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膜宋,“玉大人窿侈,你說我怎么就攤上這事∏锩#” “怎么了史简?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肛著。 經(jīng)常有香客問我圆兵,道長,這世上最難降的妖魔是什么枢贿? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任殉农,我火速辦了婚禮,結(jié)果婚禮上局荚,老公的妹妹穿的比我還像新娘超凳。我一直安慰自己,他們只是感情好耀态,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布轮傍。 她就那樣靜靜地躺著,像睡著了一般首装。 火紅的嫁衣襯著肌膚如雪创夜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天仙逻,我揣著相機(jī)與錄音挥下,去河邊找鬼揍魂。 笑死,一個胖子當(dāng)著我的面吹牛棚瘟,可吹牛的內(nèi)容都是我干的现斋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼偎蘸,長吁一口氣:“原來是場噩夢啊……” “哼庄蹋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起迷雪,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤限书,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后章咧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體倦西,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年赁严,在試婚紗的時候發(fā)現(xiàn)自己被綠了扰柠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡疼约,死狀恐怖卤档,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情程剥,我是刑警寧澤劝枣,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站织鲸,受9級特大地震影響舔腾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搂擦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一稳诚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盾饮,春花似錦采桃、人聲如沸懒熙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽工扎。三九已至徘钥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肢娘,已是汗流浹背呈础。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工舆驶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人而钞。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓沙廉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親臼节。 傳聞我的和親對象是個殘疾皇子撬陵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容

  • The Django admin site Django中一個最強(qiáng)大的部分是自動管理接口,在模型中讀取元數(shù)據(jù)來提供...
    常大鵬閱讀 29,349評論 2 18
  • admin.py 數(shù)據(jù)庫內(nèi)容管理 from django.contrib import admin from ap...
    陸文斌閱讀 109評論 0 0
  • 切換到創(chuàng)建項目的目錄 cd C:\Users\admin\Desktop\DjangoProject創(chuàng)建名為pr...
    在努力中閱讀 3,275評論 2 3
  • 一网缝、Django簡介 Django是用Python開發(fā)的一個免費(fèi)開源的Web框架巨税,可以用于快速搭建高性能,優(yōu)雅的網(wǎng)...
    仙靈兒閱讀 3,471評論 0 5
  • 前天晚上远寸,弟弟電話里說,爸爸有點(diǎn)不舒服:中午睡了很長時間犀盟,起床后把下午當(dāng)作早晨而晒,焦急的開始做早餐??…… 突然有點(diǎn)害...
    張靜君的私密日記閱讀 427評論 0 0