1.1.1.1服務(wù)器
運(yùn)行如下命令可以開啟服務(wù)器
命令1:python manage.py runserver ip:port
可以不寫ip奋救,默認(rèn)端口為8000歇万。我們在先學(xué)習(xí)的時(shí)候嘉涌,要寫上自己的ip地址荞下。
這是一個(gè)純python編寫的輕量級web服務(wù)器,僅在開發(fā)階段使用
打開瀏覽器深员,輸入網(wǎng)址“ip:port”可以打開默認(rèn)頁面
如果修改文件不需要重啟服務(wù)器区匠,如果增刪文件需要重啟服務(wù)器
通過ctrl+c停止服務(wù)器
1.1.1.2管理操作
站點(diǎn)分為“內(nèi)容發(fā)布”和“公共訪問”兩部分
“內(nèi)容發(fā)布”的部分負(fù)責(zé)添加干像、修改、刪除內(nèi)容驰弄,開發(fā)這些重復(fù)的功能是一件單調(diào)乏味麻汰、缺乏創(chuàng)造力的工作。為此戚篙,Django會(huì)根據(jù)定義的模型類完全自動(dòng)地生成管理模塊
使用django的管理五鲫,創(chuàng)建一個(gè)管理員用戶
命令2:python manage.py createsuperuser,按提示輸入用戶名岔擂、郵箱位喂、密碼
啟動(dòng)服務(wù)器,通過“ip:port/admin”訪問智亮,輸入上面創(chuàng)建的用戶名忆某、密碼完成登錄
進(jìn)入管理站點(diǎn)点待,默認(rèn)可以對groups阔蛉、users進(jìn)行管理
管理界面本地化
編輯settings.py文件,設(shè)置編碼癞埠、時(shí)區(qū)状原。
設(shè)置中國文字和時(shí)區(qū)。
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
這個(gè)是原來默認(rèn)的英文界面苗踪。LANGUAGE_CODE=’en-us’
這個(gè)是修改過settings.Py之后的中文界面颠区。LANGUAGE_CODE = 'zh-Hans'
向admin注冊booktest的模型
操作booktest/admin.py文件,注冊模型
from django.contrib import admin
from models import BookInfo
admin.site.register(BookInfo)
刷新管理頁面通铲,可以對BookInfo的數(shù)據(jù)進(jìn)行增刪改查操作
問題:如果在str方法中返回中文毕莱,在修改和添加時(shí)會(huì)報(bào)ascii的錯(cuò)誤
解決:在str()方法中,將字符串末尾添加“.encode('utf-8')”
自定義管理頁面
django提供了admin.ModelAdmin類
通過定義ModelAdmin的子類,來定義模型在Admin界面的顯示方式
class QuestionAdmin(admin.ModelAdmin):
...
admin.site.register(Question, QuestionAdmin)
列表頁屬性
添加朋截、修改頁屬性
*****************列表頁屬性*****************
1蛹稍、list_display:顯示字段,可以點(diǎn)擊列頭進(jìn)行排序
list_display = ['pk', 'btitle', 'bpub_date’]顯示字段
2部服、list_filter:過濾字段唆姐,過濾框會(huì)出現(xiàn)在右側(cè)
list_filter = ['btitle’]
3、search_fields:搜索字段廓八,搜索框會(huì)出現(xiàn)在上側(cè)
search_fields = ['btitle’]
4奉芦、list_per_page:分頁,分頁框會(huì)出現(xiàn)在下側(cè)
list_per_page = 3 表示每頁有3個(gè)剧蹂。
*****************添加声功、修改頁屬性*****************
1、fields:屬性的先后順序
fields = ['bpub_date', 'btitle’]
沒有在admin.py定義fields時(shí):
在admin.py定義fields后:
2宠叼、fieldsets:屬性分組
fieldsets = [
????('basic',{'fields': ['btitle']}),
????('more', {'fields': ['bpub_date']}),
]
關(guān)聯(lián)對象
對于HeroInfo模型類减噪,有兩種注冊方式
方式一:與BookInfo模型類相同
方式二:關(guān)聯(lián)注冊
************關(guān)聯(lián)注冊************
1、接下來實(shí)現(xiàn)關(guān)聯(lián)注冊
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注冊中使用gender代替hgender
*******************封裝*******************
def gender(self):
????if self.hgender:
return '男'
????else:
return '女'
gender.short_description = '性別’
在modles模塊下寫入一個(gè)myhgender()的方法。
*******************注冊*******************
class HeroInfoAdmin(admin.ModelAdmin):
????list_display = ['id', 'hname', 'gender', 'hcontent']