Django的管理面板默認是不開啓的,因此咱們須要進行一些設置工做
一、在INSTALLED_APPS裏面把 django.contrib.admin 前面的註釋去掉
二、運行 css
python manage.py syncdb
,創建和管理有關的表
三、編輯mysite/urls.py文件,設置管理面板的url路由規則 html
訪問http://127.0.0.1:8000/admin/ 會看到管理登陸頁面
輸入用戶名和密碼,就在上一節建立的超級用戶
固然如今仍是看不到咱們添加的投票管理項
在polls目錄下面添加admin.py頁面,內容以下 python
from django.contrib import admin from polls.models import Poll admin.site.register(Poll)
django會自動從新加載修改了的文件,但若是是新添加的文件,django是不會加載的,因此須要咱們重啓服務
如今再看看界面
這個是投票列表頁面,基本的what's up 是咱們添加的項
點擊 what's up編輯看看
自定義投票管理表單頁面
如今咱們看到的投票編輯頁面是根據咱們定義的模型自動生成的。如今咱們看看django是如何生成poll管理頁面的。
在剛纔添加的admin.py頁面裏面,用以下內容替換剛纔輸入的 django
class PollAdmin(admin.ModelAdmin): fields = ['pub_date', 'question'] admin.site.register(Poll, PollAdmin)
看看頁面有什麼變化
再來看一個 函數
class PollAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question']}), ('Date information', {'fields': ['pub_date']}), ] admin.site.register(Poll, PollAdmin)
這種是給分組了,第一個字段爲每一個 fieldsets 的標頭
django還提供給每個 fieldset設置css類, url
class PollAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question']}), ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}), ]
如今已經在管理面板中看到poll了,但是它的選項在哪裏?
第一種方法和顯示Poll同樣 spa
from polls.models import Choice admin.site.register(Choice)
刷新看看,到添加頁面看看
django默認會把有外鍵的字段用 select下拉框來顯示
如今無論是添加投票項仍是選項都是在單獨的頁面吧,若是要想在投票頁面中直接就能夠添加選項要怎麼辦? code
from django.contrib import admin from polls.models import Choice, Poll class ChoiceInline(admin.StackedInline): model = Choice extra = 3 class PollAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question']}), ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}), ] inlines = [ChoiceInline] admin.site.register(Poll, PollAdmin)
意思是直接把Choice嵌入到poll管理頁面來編輯,默認添加3個choice,再打開poll 添加頁面看看
如今每次編輯返回查看的時候都會在下面多出3個空的選項,在最下面的一個選項下面有「Add another Choice」,點擊後會在下面自動添加一個選項
修改一下 ChoiceInline看看 orm
class ChoiceInline(admin.TabularInline): #...
StackedInline修改成TabularInline
顯示樣式從排列樣式變成了表格樣式。
自定義Poll管理列表顯示樣式
默認狀況下,會列出第個對象的str(),若是要想顯示更多的列就得須要list_display來實現 server
class PollAdmin(admin.ModelAdmin): # ... list_display = ('question', 'pub_date')
咱們也把上次自定義添加的函數也加上
class PollAdmin(admin.ModelAdmin): # ... list_display = ('question', 'pub_date', 'was_published_recently')
點擊表頭能夠排序,但是was_published_recently這個列卻不會。由於這個如今函數不支持。另外這個列的名字默認就是函數的名稱,顯示的內容就是函數輸出的結果。
再從新編輯一下polls/models.py
再次編輯polls/admin.py,在poll管理列表中添加一個過濾面板 在PollAdmin中添加以下代碼
list_filter = ['pub_date']
django會根據過濾條件列的類型自動生成一些選項。
還能夠添加上搜索框
search_fields = ['question']
還能夠加上時期類型的選擇
date_hierarchy = 'pub_date'
會在數據列表上面加一個分層的日期選項。具體效果能夠運行看看
接着再說一點有關模板的東西吧,若是想把左上角的logo換成咱們本身的要怎麼作呢。
一、在你的項目中新建 templates 目錄
二、把django默認的後面管理模板,按一些的目錄放到咱們新建的templates目錄下面,具體以下設置
在django的的源碼中django/contrib/admin/templates 把admin/base_site.html文件按一樣的目錄複製到新建的templates中即在templates中創建admin子目錄,而後把base_site.html複製到裏面,修改裏面的
Django site admin
字符串爲你要的
三、修改配置文件
TEMPLATE_DIRS = ( '/path/to/mysite/templates', # 這裏寫你的目錄,只能是絕對路徑 )
明天再繼續,寫一次有點長了,下一篇說說模板了