(2018-05-14.Python從Zero到One)6康聂、(Django)Django高級(jí)__1.5.4Admin站點(diǎn)

Admin站點(diǎn)

  • 通過使用startproject創(chuàng)建的項(xiàng)目模版中,默認(rèn)Admin被啟用
  • 1.創(chuàng)建管理員的用戶名和密碼
python manage.py createsuperuser
然后按提示填寫用戶名胞四、郵箱恬汁、密碼
  • 2.在應(yīng)用內(nèi)admin.py文件完成注冊(cè),就可以在后臺(tái)管理中維護(hù)模型的數(shù)據(jù)
from django.contrib import admin
from models import *

admin.site.register(HeroInfo)
  • 查找admin文件:在INSTALLED_APPS項(xiàng)中加入django.contrib.admin辜伟,Django就會(huì)自動(dòng)搜索每個(gè)應(yīng)用的admin模塊并將其導(dǎo)入

ModelAdmin對(duì)象

  • ModelAdmin類是模型在Admin界面中的表示形式
  • 定義:定義一個(gè)類氓侧,繼承于admin.ModelAdmin,注冊(cè)模型時(shí)使用這個(gè)類
class HeroAdmin(admin.ModelAdmin):
    ...
  • 通常定義在應(yīng)用的admin.py文件里
  • 使用方式一:注冊(cè)參數(shù)
admin.site.register(HeroInfo,HeroAdmin)
  • 使用方式二:注冊(cè)裝飾器
@admin.register(HeroInfo)
class HeroAdmin(admin.ModelAdmin):
  • 通過重寫admin.ModelAdmin的屬性規(guī)定顯示效果导狡,屬性主要分為列表頁约巷、增加修改頁兩部分

列表頁選項(xiàng)

“操作選項(xiàng)”的位置

  • actions_on_top、actions_on_bottom:默認(rèn)顯示在頁面的頂部
class HeroAdmin(admin.ModelAdmin):
    actions_on_top = True
    actions_on_bottom = True

list_display

  • 出現(xiàn)列表中顯示的字段
  • 列表類型
  • 在列表中旱捧,可以是字段名稱独郎,也可以是方法名稱,但是方法名稱默認(rèn)不能排序
  • 在方法中可以使用format_html()輸出html內(nèi)容
在models.py文件中
from django.db import models
from tinymce.models import HTMLField
from django.utils.html import format_html

class HeroInfo(models.Model):
    hname = models.CharField(max_length=10)
    hcontent = HTMLField()
    isDelete = models.BooleanField()
    def hContent(self):
        return format_html(self.hcontent)

在admin.py文件中
class HeroAdmin(admin.ModelAdmin):
    list_display = ['hname', 'hContent']
  • 讓方法排序枚赡,為方法指定admin_order_field屬性
在models.py中HeroInfo類的代碼改為如下:
    def hContent(self):
        return format_html(self.hcontent)
    hContent.admin_order_field = 'hname'
  • 標(biāo)題欄名稱:將字段封裝成方法囚聚,為方法設(shè)置short_description屬性
在models.py中為HeroInfo類增加方法hName:
    def hName(self):
        return self.hname
    hName.short_description = '姓名'
    hContent.short_description = '內(nèi)容'

在admin.py頁中注冊(cè)
class HeroAdmin(admin.ModelAdmin):
    list_display = ['hName', 'hContent']

list_filter

  • 右側(cè)欄過濾器,對(duì)哪些屬性的值進(jìn)行過濾
  • 列表類型
  • 只能接收字段
class HeroAdmin(admin.ModelAdmin):
    ...
    list_filter = ['hname', 'hcontent']

list_per_page

  • 每頁中顯示多少項(xiàng)标锄,默認(rèn)設(shè)置為100
class HeroAdmin(admin.ModelAdmin):
    ...
    list_per_page = 10

search_fields

  • 搜索框
  • 列表類型顽铸,表示在這些字段上進(jìn)行搜索
  • 只能接收字段
    ...
    search_fields = ['hname']

增加與修改頁選項(xiàng)

  • fields:顯示字段的順序,如果使用元組表示顯示到一行上
class HeroAdmin(admin.ModelAdmin):
    ...
    fields = [('hname', 'hcontent')]
fieldsets:分組顯示
class HeroAdmin(admin.ModelAdmin):
    ...
    fieldsets = (
        ('base', {'fields': ('hname')}),
        ('other', {'fields': ('hcontent')})
    )
  • fields與fieldsets兩者選一

InlineModelAdmin對(duì)象

  • 類型InlineModelAdmin:表示在模型的添加或修改頁面嵌入關(guān)聯(lián)模型的添加或修改
  • 子類TabularInline:以表格的形式嵌入
  • 子類StackedInline:以塊的形式嵌入
class HeroInline(admin.TabularInline):
    model = HeroInfo

class BookAdmin(admin.ModelAdmin):
    inlines = [
        HeroInline,
    ]

重寫admin模板

  • 在項(xiàng)目所在目錄中創(chuàng)建templates目錄料皇,再創(chuàng)建一個(gè)admin目錄
  • 設(shè)置模板查找目錄:修改settings.py的TEMPLATES項(xiàng)谓松,加載模板時(shí)會(huì)在DIRS列表指定的目錄中搜索
'DIRS': [os.path.join(BASE_DIR, 'templates')],
  • 從Django安裝的目錄下(django/contrib/admin/templates)將模板頁面的源文件admin/base_site.html拷貝到第一步建好的目錄里
  • 編輯base_site.html文件
  • 刷新頁面,發(fā)現(xiàn)以剛才編輯的頁面效果顯示
  • 其它管理后臺(tái)的模板可以按照相同的方式進(jìn)行修改
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末践剂,一起剝皮案震驚了整個(gè)濱河市鬼譬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逊脯,老刑警劉巖优质,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異军洼,居然都是意外死亡巩螃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門匕争,熙熙樓的掌柜王于貴愁眉苦臉地迎上來避乏,“玉大人,你說我怎么就攤上這事甘桑∨钠ぃ” “怎么了歹叮?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)铆帽。 經(jīng)常有香客問我咆耿,道長(zhǎng),這世上最難降的妖魔是什么爹橱? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任票灰,我火速辦了婚禮,結(jié)果婚禮上宅荤,老公的妹妹穿的比我還像新娘屑迂。我一直安慰自己,他們只是感情好冯键,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布惹盼。 她就那樣靜靜地躺著,像睡著了一般惫确。 火紅的嫁衣襯著肌膚如雪手报。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天改化,我揣著相機(jī)與錄音掩蛤,去河邊找鬼。 笑死陈肛,一個(gè)胖子當(dāng)著我的面吹牛揍鸟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播句旱,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼阳藻,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了谈撒?” 一聲冷哼從身側(cè)響起腥泥,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎啃匿,沒想到半個(gè)月后蛔外,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡溯乒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年夹厌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片橙数。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尊流,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出灯帮,到底是詐尸還是另有隱情崖技,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布钟哥,位于F島的核電站迎献,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏腻贰。R本人自食惡果不足惜吁恍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望播演。 院中可真熱鬧冀瓦,春花似錦、人聲如沸写烤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洲炊。三九已至感局,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間暂衡,已是汗流浹背询微。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狂巢,地道東北人撑毛。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像唧领,于是被迫代替她去往敵國(guó)和親代态。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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