Django 後台系統的配置

2021-08-19 03:14:09 字數 2813 閱讀 4477

使用admin後台系統之前,需要先建立乙個系統管理員,建立管理員之前需先同步資料庫。

python manager.py createsuperuser

設定為中文

settings中language_code = 'zh-hans'

設定時間,時區

time_zone='asia/shanghai'

新增自己的資料模型

在admin.py中註冊

admin.site.register(publisher)

在admin中給model新增資料。

給模型加上__str__函式,比如給author模型新增str函式,讓author的顯示更加友好:

def __str__(self):

return u'%s %s' % (self.first_name, self.last_name)

希望控制admin中新增model資料時的動作,可以修改相應欄位的屬性。比如author的email欄位執行新增的時候為空。在email欄位定義中加上blank=true,又比如給book的publication_date新增blank=true, null=true屬性。

修改models屬性之後記得及時做資料遷移。

使用verbose_name屬性指定欄位的別名。比如給publisher的name欄位指定乙個中文的別名verbose_name='出版社名稱'。

在models的修改頁面,預設顯示的是models定義的str函式返回的字串。

通過定義moldeladmin來定製model在admin的表現。比如給author定義authoradmin。

class authoradmin(admin.modeladmin):

list_display = ('first_name', 'last_name', 'email')

相應的註冊**也要變化:

admin.site.register(author, authoradmin)

給author新增乙個搜尋框:

search_fields = ('first_name', 'last_name')

給book新增乙個過濾器

class bookadmin(admin.modeladmin):

list_display = ('title', 'publisher', 'publication_date')

list_filter = ('publication_date',)

過濾器不光可以作用在日期欄位上,還可以作用在boolean型別和外來鍵上。

另一種增加日期過濾的方式:

date_hierarchy = 'publication_date'

字段排序:

ordering = ('-publication_date',)

fields = ('title', 'authors', 'publisher', 'publication_date')

與fields相反的字段是exclude

exclude = ['publication_date',] 

改善多對多關係中物件選擇操作,比如給bookadmin新增如下屬性:

filter_horizontal = ('authors',)

filter_horizontal和filter_vertical 選項只適用於多對多關係。

一對多的外來鍵關係,admin使用select box來表示。如不想用select box,可新增如下屬性,讓原來一次性載入所有publisher的select box變成填寫publisher的id:

raw_id_fields = ('publisher',)

讓字段分組顯示,fieldsets和上面提到的field不能同時出現:

fieldsets = (

('作者', ),

('出版商', ),

)定製list_display欄位的顯示。比如給author加乙個布林型gender欄位,來表示性別。為了讓顯示更加人性化:

#定製顯示屬性

def showgender(self):

if self.gender:

return '男'

else:

return '女'

list_display = ('first_name', 'last_name', 'email',showgender)

給該函式設定簡短描述,讓顯示更加友好:

showgender.short_description = '性別'

可以將modeladmin的屬性簡單劃分為列表頁屬性和新增、修改頁屬性

# 列表頁屬性

list_display,list_filter,search_fields,list_per_page等

# 新增、修改頁屬性

fields ,fieldsets, filter_horizontal, raw_id_fields等

建立管理物件:

繼承自admin.tabularinline,指定model,及要建立的條數。比如:

class booksinfo(admin.tabularinline):

model = book

extra = 2

stackedinline類似。

定製化admin站點資訊:

1)修改模板檔案。比如定製admin登入頁面的title:

***x

2)自定義adminsite

class myadminsite(admin.adminsite):

site_header = '***xx'

site_url = 'welcome'

site_title = '***x'

Django 後台管理配置

前提 安裝python,安裝django,兩個都加入環境變數 1.建立乙個名為 mysite 的django專案 cmd django admin.py startproject mysite from django.db import models from django.contrib impo...

Django後台xadmin配置

pip install git git import xadmin from django.urls import path xadmin.autodiscover model自動註冊 from xadmin.plugins import xversion xversion.register mod...

Django配置xadmin後台管理

xadmin是基於django的admin開發的更完善的後台管理系統,基於bootstrap開發,擁有更自由化的頁面管理。在專案的urls.py中配置xadmin的路由 然後依次執行makemigrations,migrate建立資料庫 啟動專案,訪問 更改settings配置,可顯示中文 lang...