認識django2.0讀書筆記(6)---第六章 Django 站點管理
文件下載地址:Django_2.0_中文教程 http://download.csdn.net/detail/julius_lee/6620099
線上地址:http://djangobook.py3k.cn/2.0/
Django 2.0 Book 關鍵內容記錄,主要是為了幫助記憶和理清整個框架,同時以後忘了可以檢視,回想。
1、 django.contrib包
Django 基本程式碼的組成部分,是對python標準庫和普遍模式的實際表現
2、 啟用管理介面
1) 修改settings.py檔案
確保django.contrib.admin/sessions/auth/contenttypes 已加入到INSTALL_APPS中;
確保MIDDLEWARE_CLASSES包含django.middleware.common.CommonMiddleware,django.contrib.sessions.middleware.SessionMiddleware ,django.contrib.auth.middleware.AuthenticationMiddleware.(一般預設就可以了)
實際中建立專案後一般都如下:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
2) 執行 python manage.py sysncdb,生成管理介面資料表;
3) 將admin訪問配置在urls.py中,取消預設的註釋:(r'^admin/', include(admin.site.urls)),
這樣配置就完成了。
3、 使用管理工具
1)瀏覽器位址列中輸入runserver後的地址和埠進行登入;
2)設定語言:若顯示的英語,需要顯示中文,則可以更改mysite目錄中settings.py中的語言和地區如下:
LANGUAGE_CODE = 'zh-cn'
TIME_ZONE = 'Asia/Shanghai'
這樣時間和語言都變成本地的了
4、 加入Models到Admin管理中
在books目錄下建立admin.py檔案,匯入:
from django.contrib import admin
from mysite.books.models import Publisher,Author, Book
admin.site.register(Publisher)
admin.site.register(Author)
admin.site.register(Book)
5、 admin工作方式
服務啟動後,url.py引導URLconf,執行admin.autodiscover(),遍歷INSTALL_APPS配置,尋找app目錄中的admin.py檔案,找到後呼叫admin.site.register()註冊模組到管理工具,然後由管理工具進行顯示;
6、 設定欄位可選
即允許某些內容不填寫
只需修改books/models.py檔案
示例:
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField(**blank=True** )#改空白為true
這樣email處就可以選填了
7、 設定日期或數字型欄位可選
特殊原因:SQL中NULL不同於空字串,不接受空字串。NULL是指定空值的唯一方法
示例:
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField(**blank=True, null=True** )#可以為空
8、 自定義欄位標籤
在編輯頁面中,欄位的標籤由模組的欄位名稱生成。
規則:空格替換下劃線,首字母大寫,例如:Book模組中publication_date的標籤是Publication date
可以在模組中指定verbose_name來自定義
示例:
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField(blank=True, **verbose_name='e-mail'** )#django會自動大寫verbose的name。
9、 自定義列表
示例:顯示姓名
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField(blank=True, verbose_name='e-mail')
**def __unicode__(self):**
**return u'%s %s' % (self.first_name, self.last_name)**#顯示每個作者的姓名
示例:顯示作者列表
給author模組定義一個ModelAdmin類,修改admin.py如下:
from django.contrib import admin
from mysite.books.models import Publisher,Author, Book
**class AuthorAdmin(admin.ModelAdmin):**
**list_display = ('first_name', 'last_name', 'email')**#這樣,括號中的內容都會在介面顯示出來
admin.site.register(Publisher)
**admin.site.register(Author,AuthorAdmin)**#註冊
admin.site.register(Book)
示例:建立查詢欄
class AuthorAdmin(admin.ModelAdmin):
list_display = ('first_name', 'last_name', 'email')
**search_fields = ('first_name', 'last_name')**#這樣就可以按名字進行搜尋了
示例:建立過濾器
from django.contrib import admin
from mysite.books.models import Publisher,Author, Book
class AuthorAdmin(admin.ModelAdmin):
list_display = ('first_name', 'last_name', 'email')
search_fields = ('first_name', 'last_name')
**class BookAdmin(admin.ModelAdmin):**#這樣右邊就會顯示標題,出版社,日期等過濾器了
**list_display = ('title', 'publisher', 'publication_date')**
**list_filter = ('publication_date',)**
admin.site.register(Publisher)
admin.site.register(Author, AuthorAdmin)
**admin.site.register(Book, BookAdmin)**
示例:修改排序方式
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
**ordering = ('-publication_date',)**#這樣就可以按釋出日期進行排序了
10、自定義編輯表單
示例:按指定欄位順序顯示
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)
**fields = ('title', 'authors', 'publisher', 'publication_date')**#則會按照這個順序進行排列,去掉括號中的對應內容,則去掉內容在頁面中就會無法改動。
示例:自定義是多對多欄位,即一個作者含多本書
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)
**filter_horizontal = ('authors',)**#水平顯示選擇框
這樣做的結果是點選後,瀏覽器會單獨彈出一個視窗,讓使用者作出選擇
對應還有filter_vertical,可以垂直顯示
11、使用者、組和許可權
建立 許可,編輯 許可和刪除 許可
隨機展示一下過去按照教程進行設計的介面:差不多就能得到上面的管理介面了,具體如何設定和顯示,前面已經有方法。