7.7admin站點

7.7admin站點

7.7.1使用步驟

(1)管理界面本地化

(2)創建管理員

(3)註冊模型類

(4)自定義管理頁面

7.7.2管理界面本地化

在settings.py中設置語言和時區

LANGUAGE_CODE = 'zh-hans' # 使用中國語言

TIME_ZONE = 'Asia/Shanghai' # 使用中國上海時間

7.7.3創建超級管理員

python manage.py createsuperuser

如果想要修改密碼可以執行

python manage.py changepassword 用戶名

7.7.4註冊模型類

admin.site.register(BookInfo)

admin.site.register(HeroInfo)

7.7.5定義模型類站點管理類

(1)方式一

class BookInfoAdmin(admin.ModelAdmin):

""圖書模型類管理類"""

pass

admin.site.register(models.BookInfo,BookInfoAdmin)

(2)方式二

@admin.register(models.HeroInfo)

class HeroInfoAdmin(admin.ModelAdmin)

"""英雄模型類管理類"""

pass

注意:使用了裝飾器後,就不用再調用admin.site.register()

7.7.6調整列表頁展示

(1)頁大小

# 每頁中顯示多少條數據

list_per_page = 2

(2)“操作選項”的位置

actions_on_bottom = True

(3)列表中的列

list_display = ['模型字段1','模型字段2',...]

(4)將方法作爲列

BookInfo:

①在模型類中添加方法:

def new_pub_date(self):

    """將日期格式化成字符串輸出"""

    return self.bpub_date.strftime('%Y-%m-%d')

    # return datetime.strftime(self.bpub_date,'%Y-%m-%d')

    new_pub_date.short_description = '發佈日期'

    new_pub_date.admin_order_field = 'bpub_date' # 指定排序依據

②在admin.py中將方法名添加到要顯示的列中

HeroInfo:

# 右側過濾欄

list_filter = ['hbook','hgender']

# 頂部搜索欄

search_fields = ['hname']

(5)關聯對象

無法直接訪問關聯對象的屬性或方法,可以在模型類中封裝方法,訪問關聯對象的成員。

1)打開booktest/models.py文件,修改HeroInfo類如下:

class HeroInfo(models.Model):

    ...

    def read(self): return self.hbook.bread

    read.short_description = '圖書閱讀量'

2)打開booktest/admin.py文件,添加到列

list_display = ['id','hname','hbook','read']

7.7.7調整編輯頁展示

(1)字段

1)允許展示編輯的字段

fields = ['btitle','bpub_date']

2)允許展示編輯的字段分組

fieldsets = ( ('基本', {'fields': ['btitle', 'bpub_date']}), ('高級', { 'fields': ['bread', 'bcomment'], 'classes': ('collapse',) # 是否摺疊顯示 }) )

注意:fields與fieldsets兩者只能選一使用

(2)關聯對象

在一對多的關係中,可以在一端的編輯頁面中編輯多端的對象,嵌入多端對象的方式包括表格、塊兩種

  • 類型InlineModelAdmin:表示在模型的編輯頁面嵌入關聯模型的編輯。
  • 子類TabularInline:以表格的形式嵌入。
  • 子類StackedInline:以塊的形式嵌入。

1)以塊的形式嵌入

準備關聯的類

①打開booktest/admin.py文件,創建HeroInfoStackInline類。

class HeroInfoStackInline(admin.StackedInline):

    model = HeroInfo # 要編輯的對象

    extra = 1 # 附加編輯的數量

添加關聯

②打開booktest/admin.py文件,在BookInfoAdmin類中添加:

inlines = [HeroInfoStackInline]

2)以表格的形式嵌入

①打開booktest/admin.py文件,創建HeroInfoTabularInline類。

class HeroInfoTabularInline(admin.TabularInline):

    model = HeroInfo

    extra = 1

②打開booktest/admin.py文件,在BookInfoAdmin類中添加: inlines = [HeroInfoTabularInline]

7.7.8調整站點全局頁面信息

  • admin.site.site_header 設置網站頁頭
  • admin.site.site_title 設置頁面標題
  • admin.site.index_title 設置首頁標語

7.7.9站點上傳圖片

(1)安裝圖片處理模塊

pip install Pillow

(2)指定上傳的文件的存儲位置

static_files—>media—>book

在settings.py 文件中添加如下上傳保存目錄信息:

 

MEDIA_ROOT=os.path.join(BASE_DIR,"static_files/media")

(3)模型類準備image上傳字段

爲BookInfo模型類添加一個ImageFiled

image = models.ImageField(upload_to='book', verbose_name='圖書圖片', null=True)

(4)遷移

python manage.py makemigrations

python manage.py migrate

發佈了51 篇原創文章 · 獲贊 2 · 訪問量 5940
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章