django站點管理詳解
管理界面是基礎設施中非常重要的一部分。這是以網頁和有限的可信任管理者為基礎的界面,它可以讓你添加,編輯和刪除網站內容。Django有自己的自動管理界面。這個特性是這樣起作用的:它讀取你模式中的元數(shù)據(jù),然后提供給你一個強大而且可以使用的界面,網站管理者可以用它立即工作。
Django的管理員模塊是Django的標準庫django.contrib的一部分。這個包還包括其它一些實用的模塊:
django.contrib.auth
django.contrib.sessions
django.contrib.comments
我們分幾個部分講解django的管理界面(admin)的使用。
配置
其實admin的配置并不需要我們過多操心,在django創(chuàng)建項目和app的時候都會為我們自動創(chuàng)建,如果你不需要可以將其注釋掉。如果要使用admin那么你需要檢查以下幾個點:
1.在INSTALLED_APPS設置文件中有
'django.contrib.admin' 'django.contrib.auth', 'django.contrib.contenttypes' 'django.contrib.sessions'
因為admin模塊依賴
2.在MIDDLEWARE_CLASSES屬性中有
'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware' 'django.contrib.auth.middleware.AuthenticationMiddleware'.
也是因為依賴
3.運行pythonmanage.pymakemigrations和pythonmanage.pymigrate,用于創(chuàng)建為admin等模塊創(chuàng)建新的數(shù)據(jù)庫表。
因為apps中有auth模塊,會要求你創(chuàng)建一個超級用戶。所以在此之前你可以使用pythonmanage.pycreatesuperuser命令創(chuàng)建一個超級用戶。這個非常簡單,根據(jù)提示輸入就可以。
4.在urls.py中設置admin映射,這個一般也是系統(tǒng)為我們自動添加的。
from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', #... (r'^admin/', include(admin.site.urls)), #... )
完成以上步驟后,運行runserver你就可以通過/admin/這個url獲取admin界面了。只不過這時候的admin界面除了用戶和用戶組之外沒有其他的內容
admin.py文件
在每個app下系統(tǒng)會自動創(chuàng)建admin.py文件。這個文件的編寫直接影響到admin界面的顯示內容。
1.對model類進行注冊
2.
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)
這是最基本的數(shù)據(jù)添加功能。當你在project文件夾中添加新的文件時,需要重啟server才能生效。這樣就會看到admin主界面中有了你定義的數(shù)據(jù)模型。此外如果想要你的admin界面中的添加數(shù)據(jù)功能生效,需要確保MIDDLEWARE_CLASSES中有'django.contrib.messages.middleware.MessageMiddleware'。這樣我們就能夠在admin界面很容易的操作數(shù)據(jù)庫內容了,系統(tǒng)會自動同步到數(shù)據(jù)庫。
自定義admin模塊的顯示
通過上面的設置雖然我們有了一個可以基本滿足需求的admin界面,但是顯示比較單一?;撅@示內容的設置應該在models文件中。例如:
class Author(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=40) email =models.EmailField(blank=True)
只需要在字段聲明中,設置blank=True,默認是False,就可以讓email為空。
屬性Field函數(shù)中的verbose_name可以控制這個字段在admin中以什么樣的名字顯示
Meta內部類中的verbose_name可以給模型起一個更可讀的名字,ordering可以決定數(shù)據(jù)以什么排列方式顯示。
__unicode__的返回值可以決定表在admin中以什么名字顯示。
權限管理
因為你是用超級用戶登錄的,你可以創(chuàng)建,編輯和刪除任何對像。然而,不同的環(huán)境要求有不同的權限,系統(tǒng)不允許所有人都是超級用戶。管理工具有一個用戶權限系統(tǒng),通過它你可以根據(jù)用戶的需要來指定他們的權限,從而達到部分訪問系統(tǒng)的目的。
用戶帳號應該是通用的、獨立于管理界面以外仍可以使用。但我們現(xiàn)在把它看作是管理界面的一部分。在第十四章,我們將講述如何把用戶帳號與你的網站(不僅僅是管理工具)集成在一起。
你通過管理界面編輯用戶及其許可就像你編輯別的對象一樣。我們在本章的前面,瀏覽用戶和用戶組區(qū)域的時候已經見過這些了。如你所想,用戶對象有標準的用戶名、密碼、郵箱地址和真實姓名,同時它還有關于使用管理界面的權限定義。首先,這有一組三個布爾型標記:
活動標志,它用來控制用戶是否已經激活。如果一個用戶帳號的這個標記是關閉狀態(tài),而用戶又嘗試用它登錄時,即使密碼正確,他也無法登錄系統(tǒng)。
成員標志,它用來控制這個用戶是否可以登錄管理界面,由于用戶系統(tǒng)可以被用于控制公眾頁面,這個標志可用來區(qū)分公眾用戶和管理用戶。
超級用戶標志,它賦予用戶在管理界面中添加、修改和刪除任何項目的權限。如果一個用戶帳號有這個標志,那么所有權限設置(即使沒有)都會被忽略。
普通的活躍,非超級用戶的管理用戶可以根據(jù)一套設定好的許可進入。管理界面中每種可編輯的對象(如:books、authors、publishers)都有三種權限:創(chuàng)建許可,編輯許可和刪除許可。給一個用戶授權許可也就表明該用戶可以進行許可描述的操作。
當你創(chuàng)建一個用戶時,它沒有任何權限,該有什么權限是由你決定的。例如,你可以給一個用戶添加和修改publishers的權限,而不給他刪除的權限。請注意,這些權限是定義在模塊級別上,而不是對象級別上的。據(jù)個例子,你可以讓小強修改任何圖書,但是不能讓他僅修改由機械工業(yè)出版社出版的圖書。
權限管理系統(tǒng)也控制編輯用戶和權限。如果你給某人編輯用戶的權限,他可以編輯自己的權限,這種能力可能不是你希望的。賦予一個用戶修改用戶的權限,本質上說就是把他變成一個超級用戶。
你也可以給組中分配用戶。一個組簡化了給組中所有成員應用一套許可的動作。組在給大量用戶特定權限的時候很有用。
總結
以上就是本文關于django站點管理詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關文章
python使用Pycharm創(chuàng)建一個Django項目
這篇文章主要介紹了python使用Pycharm創(chuàng)建一個Django項目,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03Python實現(xiàn)讀取txt文件并轉換為excel的方法示例
這篇文章主要介紹了Python實現(xiàn)讀取txt文件并轉換為excel的方法,涉及Python針對txt文件的讀取及Excel格式文件生成相關操作技巧,需要的朋友可以參考下2018-05-05