最近在學習Django,打算玩玩網頁后台方面的東西,因為一直很好奇但卻沒怎么接觸過。Django對我來說是一個全新的內容,思路想來也是全新的,或許並不能寫得很明白,所以大家就湊合着看吧~
本篇筆記(其實我的所有筆記都是),並不會過於詳細的講解。因此如果有大家看不明白的地方,歡迎在我正版博客下留言,有時間的時候我很願意來這里與大家探討問題。(當然,不能是簡簡單單就可以百度到的問題-.-)
我所選用的教材是《The Django Book 2.0》,本節是Admin部分,對應書中第六章。
------------------------------------------------------------------------------------------------------------------------------------------------
1、歷史&管理界面(Admin)的用處
這里給大家講講書中提到的一個Django的小故事,以此來讓大家了解管理界面的作用——
在Django最開始開發的新聞報道的行業應用中,有一個典型的在線自來水的水質專題報道應用,它的實現流程是這樣的:
· 負責這個報道的記者和要處理數據的開發者碰頭,提供一些數據給開發者。
· 開發者圍繞這些數據設計模型然后配置一個管理界面給記者。
· 記者檢查管理界面,盡早指出缺少或多余的字段。開發者來回地修改模塊。
· 當模塊認可后,記者就開始用管理界面輸入數據。同時,程序員可以專注於開發公眾訪問視圖和模板(有趣的部分)。
由此我們可以看到管理界面的第一個作用:供外行操作網站數據庫。(你當然不能指望那些記者會使用MySQL或者Django去操作數據庫-.-)
除了數據操作外,還有很多針對開發者的作用,例如:
· 檢查模塊:你定義好一些模塊之后,在Admin中操作一下,可以查錯。
· 管理外部數據:如果你搞到很多外部數據(用戶輸入、網絡爬蟲……),那么在Admin中檢查和編輯這些數據,雖然功能並不是很強大,卻是比較便捷的。
· 臨時的數據管理程序:你可以開發個小站點自己用,通過Admin操作數據~
2、用戶權限系統&管理界面(Admin)的定位
Admin有一套用戶權限系統:
1. 每個用戶都有用戶名、密碼、郵箱地址、真實姓名,以及使用Admin的權限定義。
2. 權限定義如下表
名稱 | 解釋 | 備注 | |
一組三個布爾(bool)標記 | 活動標志 | 標記用戶是否激活 激活了才能登錄 |
|
成員標志 | 標記用戶是否可以登錄Admin 用來區分公眾用戶和管理用戶 |
用戶系統是獨立於Admin的 它不僅可應用於管理頁面 也可以用於控制公眾頁面 因此要對兩種用戶作以區分 |
|
超級用戶標志 | 有Admin中的一切權限 |
如果有了這個, 別的權限取值將全被忽略 |
|
針對每個模型的權限 | 創建許可 | 有了哪種許可,就可以做哪種操作 | |
編輯許可 | |||
刪除許可 | |||
編輯用戶和權限 | 編輯用戶的權限 | 可以編輯用戶的權限(包括自己) | 就相當於把他設為超級用戶-.- |
3. 可以創建用戶組,為組設定權限,從而組中所有用戶都有同樣的權限
在使用Admin時,一定要注意以下問題:
· 別把它做成公眾數據訪問接口
· 別讓它有對數據進行復雜的排序和查詢的功能
· 只能提供給可信任的管理員
3、django.contrib包 & 管理界面(Admin)
請大家打開你的django源代碼,從中你會看到contrib文件夾,這個就是django.contrib包。
記得曾經見過一些前輩,學東西喜歡直接看源代碼,看不懂再看文檔。雖然我並不贊同(覺得這樣效率低),但這的確可以說明,源代碼幾乎包含了所有你應當掌握的東西。
話扯遠了,咱們說回來,這個django.contrib包里面有很多Django自帶的附加組件。
本篇所講的Admin就是這其中的管理界面(django.contrib.admin),而這里面還有很多功能,例如:
· 用戶鑒別系統(django.contrib.auth)
· 支持匿名會話(django.contrib.sessions)
· 用戶評注系統(django.contrib.comments)
· ……
這些我們將在第十六章詳細討論。
4、激活管理界面(Admin)
在Django中默認已經設置好了所有管理界面的內容,因此你只要:
1. 直接運行:python manage.py syncdb,過程中按照指示創建一個超級用戶
1+. 如果上面過程中選擇了no,沒創建超級用戶,那么你也可以單獨運行:python manage.py createsuperuser,來創建一個超級用戶
2. 運行服務器:python manage.py runserver
3. 打開管理界面:http://127.0.0.1:8000/admin/,用你剛才設置的超級用戶登錄
這樣你便可以看到管理界面了。
注:如果你想了解使用管理界面具體需要哪些設置(就是Django默認設置好的那部分),請去《The Django Book 2.0》中看吧。
5、語言支持
Django的管理界面支持很多語言,讓其用你的語言顯示的方法如下:
1. 打開settings.py,找到MIDDLEWARE_CLASSES設置,在'django.contrib.sessions.middleware.SessionMiddleware'后面添加一項'django.middleware.locale.LocaleMiddleware'
2. 刷新管理界面
此時,如果你的語言可用,那么頁面中很多內容都會被翻譯好。
6、關於之前admin.py疑問的解答
在模型一講中,我有一個疑問,admin.py到底是干什么的?
現在可以回答了,這是用來把咱們自己定義的模型加入admin界面的注冊表。
以那一講中的模型(Publisher、Author、Book)為例,只要在"./books/admin.py"文件中寫入:
1 from django.contrib import admin 2 from five.books.models import Publisher, Author, Book 3 4 admin.site.register(Publisher) 5 admin.site.register(Author) 6 admin.site.register(Book)
如此一來,再打開admin界面,便會看到這幾個模型並可以隨意操作了。
7、提速聲明
關於admin界面更多的內容,例如其幕后如何工作、各種方便的用法,書中有,這里不再贅述。
Django筆記,算上這篇才第六篇,但時間卻已經過了一個學期。這是我第一次寫這種長篇的筆記,我現在深深感到自己的懶惰、眼高手低,以及不知取舍。這種速度,無法接受。
因此,我后面的內容將真正寫成“筆記”,而不是“教程”。筆記,應當是自己忘記了看看,可以回憶起來;而教程,則是應該把完全不會的人講會。我沒必要寫一份教程,寫筆記就可以了。
但畢竟是博客,我也希望大家來看,對大家有幫助。因此,在這里聲明一下具體省略的內容:
1. 暫時用不到的內容(我是在學Django,還沒開始使用。因此,學過多過全沒有意義,應當先掌握基本,在實踐中不斷完善。)
2. 書中詳細闡述的內容(這部分,實在沒必要重寫。要么就是寫個簡短的總結,要么就是干脆省略。)
3. 版本不符的內容(本書對應Django版本已經不是最新的了,因此這里只寫我現在使用的較新版本的內容,老版本內容自行查書即可。)
4. 其余沒必要的內容(文中一般都會聲明省略了哪些內容,供讀者參考。)
------------------------------------------------------------------------------------------------------------------------------------------------
至此,“Admin(Django站點管理界面)”一章筆記完成,下一章是交互性網站的支柱——“表單”。