1. 程式人生 > >認識django2.0讀書筆記(6)---第六章 Django 站點管理

認識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、使用者、組和許可權

建立 許可,編輯 許可和刪除 許可

隨機展示一下過去按照教程進行設計的介面:


差不多就能得到上面的管理介面了,具體如何設定和顯示,前面已經有方法。