django管理站點(diǎn)

1.1.1.1服務(wù)器

運(yùn)行如下命令可以開(kāi)啟服務(wù)器

命令1:python manage.py runserver ip:port

可以不寫(xiě)ip,默認(rèn)端口為8000。我們?cè)谙葘W(xué)習(xí)的時(shí)候,要寫(xiě)上自己的ip地址。

這是一個(gè)純python編寫(xiě)的輕量級(jí)web服務(wù)器,僅在開(kāi)發(fā)階段使用

打開(kāi)瀏覽器,輸入網(wǎng)址“ip:port”可以打開(kāi)默認(rèn)頁(yè)面

如果修改文件不需要重啟服務(wù)器,如果增刪文件需要重啟服務(wù)器

通過(guò)ctrl+c停止服務(wù)器

1.1.1.2管理操作

站點(diǎn)分為“內(nèi)容發(fā)布”和“公共訪(fǎng)問(wèn)”兩部分

“內(nèi)容發(fā)布”的部分負(fù)責(zé)添加、修改、刪除內(nèi)容,開(kāi)發(fā)這些重復(fù)的功能是一件單調(diào)乏味、缺乏創(chuàng)造力的工作。為此,Django會(huì)根據(jù)定義的模型類(lèi)完全自動(dòng)地生成管理模塊

使用django的管理,創(chuàng)建一個(gè)管理員用戶(hù)

命令2:python manage.py createsuperuser,按提示輸入用戶(hù)名、郵箱、密碼

啟動(dòng)服務(wù)器,通過(guò)“ip:port/admin”訪(fǎng)問(wèn),輸入上面創(chuàng)建的用戶(hù)名、密碼完成登錄

進(jìn)入管理站點(diǎn),默認(rèn)可以對(duì)groups、users進(jìn)行管理

管理界面本地化

編輯settings.py文件,設(shè)置編碼、時(shí)區(qū)。

設(shè)置中國(guó)文字和時(shí)區(qū)。

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

這個(gè)是原來(lái)默認(rèn)的英文界面。LANGUAGE_CODE=’en-us’

這個(gè)是修改過(guò)settings.Py之后的中文界面。LANGUAGE_CODE = 'zh-Hans'



向admin注冊(cè)booktest的模型

操作booktest/admin.py文件,注冊(cè)模型

from django.contrib import admin

from models import BookInfo

admin.site.register(BookInfo)

刷新管理頁(yè)面,可以對(duì)BookInfo的數(shù)據(jù)進(jìn)行增刪改查操作

問(wèn)題:如果在str方法中返回中文,在修改和添加時(shí)會(huì)報(bào)ascii的錯(cuò)誤

解決:在str()方法中,將字符串末尾添加“.encode('utf-8')”


自定義管理頁(yè)面

django提供了admin.ModelAdmin類(lèi)

通過(guò)定義ModelAdmin的子類(lèi),來(lái)定義模型在Admin界面的顯示方式

class QuestionAdmin(admin.ModelAdmin):

...

admin.site.register(Question, QuestionAdmin)

列表頁(yè)屬性

添加、修改頁(yè)屬性

*****************列表頁(yè)屬性*****************

1、list_display:顯示字段,可以點(diǎn)擊列頭進(jìn)行排序

list_display = ['pk', 'btitle', 'bpub_date’]顯示字段



2、list_filter:過(guò)濾字段,過(guò)濾框會(huì)出現(xiàn)在右側(cè)

list_filter = ['btitle’]

3、search_fields:搜索字段,搜索框會(huì)出現(xiàn)在上側(cè)

search_fields = ['btitle’]



4、list_per_page:分頁(yè),分頁(yè)框會(huì)出現(xiàn)在下側(cè)

list_per_page = 3 表示每頁(yè)有3個(gè)。



*****************添加、修改頁(yè)屬性*****************

1、fields:屬性的先后順序

fields = ['bpub_date', 'btitle’]

沒(méi)有在admin.py定義fields時(shí):

在admin.py定義fields后:

2、fieldsets:屬性分組

fieldsets = [

????('basic',{'fields': ['btitle']}),

????('more', {'fields': ['bpub_date']}),

]

關(guān)聯(lián)對(duì)象

對(duì)于HeroInfo模型類(lèi),有兩種注冊(cè)方式

方式一:與BookInfo模型類(lèi)相同

方式二:關(guān)聯(lián)注冊(cè)

************關(guān)聯(lián)注冊(cè)************

1、接下來(lái)實(shí)現(xiàn)關(guān)聯(lián)注冊(cè)

from django.contrib import admin

from models import BookInfo,HeroInfo

class HeroInfoInline(admin.StackedInline):

????model = HeroInfo

????extra = 2

class BookInfoAdmin(admin.ModelAdmin):

????inlines = [HeroInfoInline]

admin.site.register(BookInfo, BookInfoAdmin)



2、可以將內(nèi)嵌的方式改為表格

class HeroInfoInline(admin.TabularInline)



bool值的顯示

發(fā)布性別hgender的顯示不是一個(gè)直觀的結(jié)果,可以使用方法進(jìn)行封裝

在admin注冊(cè)中使用gender代替hgender

*******************封裝*******************

def gender(self):

????if self.hgender:

return '男'

????else:

return '女'

gender.short_description = '性別’

在modles模塊下寫(xiě)入一個(gè)myhgender()的方法。


*******************注冊(cè)*******************

class HeroInfoAdmin(admin.ModelAdmin):

????list_display = ['id', 'hname', 'gender', 'hcontent']

在admin模塊下寫(xiě)入:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容