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ě)入:
