亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区

當前位置:首頁 > 網(wǎng)站舊欄目 > 學習園地 > 設(shè)計軟件教程 > 翻譯www.djangobook.com之第六章:Django管理系統(tǒng)admin

翻譯www.djangobook.com之第六章:Django管理系統(tǒng)admin
2010-01-13 23:36:48  作者:  來源:
The Django Book:第6章 Django管理系統(tǒng)admin

Web開發(fā)中有一些我們最討厭的部分:開發(fā)管理界面
開發(fā)站點中公眾可以看見的部分一直不一樣也很有趣,但是管理用來編輯站點的部分一直是一樣的
你不得不處理用戶認證,顯示和處理表單,處理狡猾的驗證問題...這很無聊而且是重復性的
Django解決這個無聊、重復的任務(wù)的方式呢?已經(jīng)幫你都做好了,只需幾行不能再少的代碼即可
Django中最老和最強大的部分就是自動管理界面,它從你的模型中取得元數(shù)據(jù)來提供強大的產(chǎn)品級的界面
內(nèi)容制造者可以馬上使用它給站點添加內(nèi)容

激活管理界面
我們認為管理界面是Django中最cool的部分,大部分Djangonauts也同意這點
但是由于不是每個人都需要它,它是一個可選的部分
有3個步驟來激活管理界面:
1,向你的模型添加admin metadata
并不是所有的模型都可以或者應(yīng)該被admin用戶編輯,所以你需要標記那些需要管理界面的模型
上一章的Book模型添加一個管理界面的方法就是:
Java代碼 復制代碼
  1. class Book(models.Model):   
  2.     title = models.CharField(maxlength=100)   
  3.     authors = models.ManyToManyField(Author)   
  4.     publisher = models.ForeignKey(Publisher)   
  5.     publication_date = models.DateField()   
  6.   
  7.     class Admin:   
  8.         pass  

Admin聲明標記這個類擁有一個管理界面,在Admin之下你可以配置許多選項
目前我們采用默認值,所以我們使用pass來表示Admin類是空的
如果你正在按這個例子寫自己的代碼,現(xiàn)在給Publisher和Author類添加Admin聲明是個好主意
2,安裝admin模型,簡單的把"django.contrib.admin"添加到你的INSTALLED_APPS設(shè)置里
然后運行python manage.py syncdb來安裝admin使用的額外的表
注意,在你第一次運行syncdb時,你很可能被問起是否創(chuàng)建一個superuser
如果那時你沒有創(chuàng)建superuser,你需要運行djang/contrib/auth/bin/create_superuser.py
來創(chuàng)建一個admin用戶,否則你就不能登錄到管理界面里去
3,把URL模式添加到urls.py,如果仍在使用startproject創(chuàng)建的工程,admin的URL模式可能
已經(jīng)在那兒了,但是被注釋掉了,你的URL模式應(yīng)該像這樣:
Java代碼 復制代碼
  1. from django.conf.urls.defaults import *   
  2.   
  3. urlpatterns = patterns('',   
  4.     (r'^admin/', include('django.contrib.admin.urls')),   
  5. )  

就這樣,現(xiàn)在運行python manage.py runserver來啟動服務(wù)器,你將看到如下信息:
Validating models...
0 errors found.

Django version 0.96-pre, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
現(xiàn)在你可以訪問http://127.0.0.1:8000/admin/,登錄,然后隨便玩玩

使用管理界面
管理頁面設(shè)計用來給非技術(shù)人員使用,所有非常簡單,但有幾個地方需要注意
首先你將看到登錄界面,可以用你第一次運行syncdb時創(chuàng)建的用戶名和密碼來登錄

登錄之后你將看到你可以管理用戶,組和權(quán)限
每個聲明了Admin的對象將顯示在首頁上,添加和編輯這兩個鏈接將導向改動列表和編輯表單的頁面

改動列表是系統(tǒng)中對象列表的首頁
[img]http://media.djangobook.com/content/chapter06/changelist.png[/imag]
有很多選項來控制哪些域顯示在這個列表中以及其它特性的外觀,如日期格式,搜索域和過濾接口
下面會有對這些特性更多的解釋
編輯表單用來編輯已有的對象和創(chuàng)建新對象
你的模型的每個域?qū)@示在這里,不同的域類型有不同的顯示界面,如日期和時間域是日歷控件
而外鍵使用的是選擇框等等

你會注意到admin也為你處理輸入驗證,試著留一個需要的域不填,或者在一個時間域里輸入不合法的時間,你會看到當你保存時出現(xiàn)錯誤顯示

驗證是第7章講到的一個強大的驗證框架來做的
當編輯一個對象時你會在右上方看到一個歷史鏈接,admin上的每一個改動都會被記入日志
你可以點擊歷史按鈕來查看日志

admin里的刪除是級聯(lián)的,當你刪除一個對象時,admin會讓你確認刪除動作以避免代價昂貴的錯誤
確認頁面也會顯示所有將被刪除的相關(guān)的對象


用戶,組,權(quán)限
既然你用superuser登錄,你擁有創(chuàng)建,編輯和刪除任何對象的權(quán)限
盡管如此,admin也有一個用戶權(quán)限系統(tǒng),你可以使用它來約束其它用戶的訪問權(quán)限
你可以像編輯其它對象一樣來編輯這些用戶和權(quán)限,用戶和組模型的鏈接和其它你定義的對象一樣顯示在admin首頁
用戶對象有標準的用戶名,密碼,郵件和真實姓名域,以及一些定義用戶在admin的權(quán)限的域
首先,這里有一些flags:
1,“is active”控制用戶是否是活動的,如果這項flag為off,這個用戶將不能訪問任何需要登錄的URL
2,“is staff”控制用戶是否允許登錄admin,由于第12章講到這個用戶系統(tǒng)同樣被用來控制對public頁面的
訪問權(quán)限,這個flag對于public用戶和管理員的含義不同
3,“is superuser”給予用戶在admin的任何訪問權(quán)限,普通的權(quán)限將被忽略
對于正常的admin用戶,即活動的而非superuser的staff用戶,他們的訪問權(quán)限取決于一些被分配的權(quán)限
每個可以在admin編輯的對象擁有3個權(quán)限:創(chuàng)建權(quán)限,編輯權(quán)限和刪除權(quán)限,給一個用戶賦予權(quán)限將
允許用戶訪問這些權(quán)限所描述的頁面
注意,對編輯用戶和編輯權(quán)限的訪問同樣在這個權(quán)限系統(tǒng)控制,如果你給一個用戶編輯用戶的權(quán)限,
她將可以編輯她自己的權(quán)限,這可能是你的初衷!
你也可以給用戶分配組,一個組就是一些權(quán)限,組的權(quán)限將分配給組的成員
給用戶賦予一套數(shù)量很多的權(quán)限時組就很有用了

定制管理界面
有許多方式來定制admin的界面外觀和行為,我們僅僅看其中跟我們的“Book”模型相關(guān)的一些
第12章詳述了定制admin界面
現(xiàn)在books的改動列表僅僅顯示模型的string展現(xiàn),即__str__
這對于少量的books可以很好的工作,但是如果我們有成千上萬的books,這將很難在干草推里找到唯一的那根針
盡管如此,我們可以給這個界面很方便的添加一些顯示,搜索和過濾方法,編輯Admin定義:
Java代碼 復制代碼
  1. class Book(models.Model):   
  2.     title = models.CharField(maxlength=100)   
  3.     authors = models.ManyToManyField(Author)   
  4.     publisher = models.ForeignKey(Publisher)   
  5.     publication_date = models.DateField()   
  6.   
  7.     class Admin:   
  8.         list_display   = ('title''publisher''publication_date')   
  9.         list_filter    = ('publisher''publication_date')   
  10.         ordering       = ('-publication_date',)   
  11.         search_fields  = ('title',)  

這4行代碼神奇的改變了我們的列表界面:

這些定義中的每一行都告訴admin來構(gòu)建一個不同的界面:
1,ordering選項控制了對象在admin里面顯示的順序,它是對結(jié)果排序的域的列表
前面加一個減號將排反序,所以例子中我們對publication_date排序,最近的書將顯示在最前面
2,list_display選項控制了在改動列表里哪些列將顯示,默認情況下將只顯示對象的string展示
這一個單獨的列,這里我們顯示title,publisher和publication_date
3,list_filter選項將在列表的右上方創(chuàng)建過濾器條,我們允許通過date和publisher來過濾
你可以讓admin過濾任何域,但是外鍵或者有chioces屬性集的域工作的更好
4,最后search_fields選項創(chuàng)建一個允許文本搜索的域,這里允許通過title域搜索
通過這里以及第12章描述的選項你可以只用幾行代碼構(gòu)建一個強大的具備產(chǎn)品能力的編輯數(shù)據(jù)界面


定制管理系統(tǒng)的外觀
顯然在每個管理頁面的頂端擁有一個“Django 管理系統(tǒng)”是很荒謬的,它只是一個占位文本
盡管如此,使用Django的模板系統(tǒng)可以很容易改變這點,Django的admin是Django自己支持的
它的界面使用Django自己的模板系統(tǒng)
打開mysite/settings.py看看TEMPLATE_DIRS設(shè)置,用來載入Django模板時檢查文件系統(tǒng)目錄
它是一個搜索的路徑,默認情況下它是空的,下面我們加點東西來告訴Django我們的模板在哪:
Java代碼 復制代碼
  1. TEMPLATE_IDRS = (   
  2.     "/home/mytemplates", # Change this to your own directory.   
  3. )  

注意這里包括了最后的逗號,Python使用它來區(qū)分單元素元組和括號括起來的表達式
現(xiàn)在把admin/base_site.html從Django的admin模板目錄(django/contrib/admin/templates)復制到
TEMPLATE_DIRS下的admin子目錄下,admin是新建的子目錄
然后編輯admin/base_site.html,用你自己的站點的名字替換Django文本
注意任何Django的默認admin模板都可以覆蓋,只需像base_site.html一樣覆蓋模板
即從默認目錄復制你的自定義目錄然后改變這個副本
敏銳的讀者可能想知道,如果TEMPLATE_DIRS默認是空的,Django是怎樣找到默認的admin模板的?
答案是,默認情況下Django自動在每個app包下搜尋templates/子目錄下的模板
看看第10章的“模板載入器”你將了解關(guān)于它的更多信息

定制管理系統(tǒng)首頁
同樣需要注意的是,你可能想定制Django的admin首頁外觀
默認時它將根據(jù)INSTALLED_APPS并按程序名排序顯示所有的apps
盡管如此,你可能想改變這個顯示順序來使你更容易找到你要的apps
畢竟首頁時admin最重要的頁面,它應(yīng)該很容易使用才行
需要定制的模板時admin/index.html,記得把admin/base_site.html復制到你的自定義模板目錄
編輯這個文件,你將看到它使用模板標簽{% get_admin_app_list as app_list %}
這就是得到所有安裝的Django app的魔法所在
你可以用你認為最好的方法硬編碼對象專有的admin頁面來替換這個標簽
如果你不太明白硬編碼鏈接,可以參考第10章的實現(xiàn)你自己的模板標簽的細節(jié)
Django在這個地方提供另一個捷徑,運行python mange.py adminindex <app>來在admin首頁模板
包含一些模板代碼,開始時這十分有用
參考第12章關(guān)于定制Django的admin站點外觀的細節(jié)

何時使用和為什么使用管理界面
我們認為Django的admin界面很神奇,事實上,我們稱它為Django的一個“殺手級特性”
盡管如此,我們經(jīng)常被問到admin的“use cases”這個問題,即什么時候我們使用它,以及為什么使用它?
這幾年我們討論了許多使用admin界面可能有幫助的模式
顯然它對于編輯數(shù)據(jù)十分有用,如果你有一些數(shù)據(jù)輸入的任務(wù),admin就是你想要的
我們也發(fā)現(xiàn)admin在下面幾種情況下十分有用:
1,檢查數(shù)據(jù)模型,當我們定義一個新模型后第一件事就是在admin里面激活它并且輸入一些模擬數(shù)據(jù)
發(fā)現(xiàn)一些數(shù)據(jù)模型錯誤是很常見的,有一個圖形界面來揭露這些錯誤會很有用
2,管理需要的數(shù)據(jù),例如對于chicagocrime.org有自動的數(shù)據(jù)數(shù)據(jù)產(chǎn)生源,但是當數(shù)據(jù)源出現(xiàn)問題,
我們可以通過admin很輕松的編輯數(shù)據(jù)

安徽新華電腦學校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区
日韩亚洲欧美中文高清在线| 欧美专区福利在线| 久久国产精品视频在线观看| 久久人人爽人人爽人人片av高清| yellow视频在线观看一区二区| 国产日产欧美视频| 国产中文一区二区| 国产日产亚洲精品| 国产美女精品免费电影| 国产伦精品一区二区三区视频免费| 国产这里只有精品| 国产伦精品一区二区三区视频孕妇 | 国产精品久久久久久久久久尿| 久久久精品欧美| 国产精品三级美女白浆呻吟| 国产精品久久久91| 中文精品无码中文字幕无码专区| 最新不卡av| 日日噜噜噜噜夜夜爽亚洲精品| 日本高清+成人网在线观看| 欧洲精品在线播放| 欧美 日韩 国产 在线观看| 国产区二精品视| 国产精品有限公司| 国产二区一区| 国产精品人人做人人爽| 欧美激情一二区| 日本三级韩国三级久久| 国内精品二区| 91久久伊人青青碰碰婷婷| 久久福利电影| 欧美日韩福利在线观看| 日韩免费av片在线观看| 国产中文字幕免费观看| 91国内在线视频| 国产精品久久久久久久天堂| 自拍另类欧美| 欧美日韩精品一区| 99伊人久久| 国产精品视频免费观看| 亚洲精品日韩精品| 黄色一级免费大片| 777久久精品一区二区三区无码| 国产成人无码一二三区视频| 欧美精品999| 欧美一区三区二区在线观看| 国产精品一区二区三区四区五区| 久久久久亚洲精品国产| 宅男在线精品国产免费观看| 日韩欧美视频一区二区| 成人久久一区二区| 久久久久五月天| 中文字幕一区综合| 精品日本一区二区三区在线观看| 91久久精品日日躁夜夜躁国产| 国产精品日韩电影| 日本三级中国三级99人妇网站| 国产欧美日韩一区二区三区| 日韩在线小视频| 亚洲欧美日韩国产成人综合一二三区| 欧美激情www| 国产黄色一级网站| 在线一区日本视频| 蜜桃日韩视频| 日韩在线观看免费av| 亚洲欧美日韩综合一区| 免费国产a级片| 久久精品91久久久久久再现| 日韩av色在线| 91精品天堂| 亚洲精品永久www嫩草| 国产女主播一区二区| 国产精品久在线观看| 欧洲精品视频在线| 国产成人avxxxxx在线看| 亚洲免费精品视频| 成人精品一区二区三区电影黑人| 九九精品视频在线观看| 国产淫片av片久久久久久| 国产精品露脸自拍| 国内精品久久久久久久久| 日韩中文av在线| 日韩av一区二区三区在线观看 | 久久久久国产精品免费网站| 国产在线视频不卡| 国产精品户外野外| 国模吧一区二区| 久久久国产91| 欧美精品一区二区视频| 久久久极品av| 韩国一区二区av| 欧美精品在线观看| 99免费在线视频观看| 伊人婷婷久久| 91九色国产在线| 日本一区二区三区精品视频| 久久一区二区三区欧美亚洲| 日韩一二区视频| 国产精品啪啪啪视频| 国产女人18毛片水18精品| 亚洲人成网站在线播放2019 | 国产精品伊人日日| 国产av不卡一区二区| 成人www视频在线观看| 亚洲v日韩v欧美v综合| 久久琪琪电影院| 欧美综合激情| 国产精品美乳一区二区免费| 国产一区免费视频| 亚洲视频精品一区| 国产国语videosex另类| 人妻无码视频一区二区三区| 久久九九亚洲综合| 国产裸体免费无遮挡| 欧美一区二区三区免费观看| 色婷婷综合久久久久| 国内精品国产三级国产在线专| 九九久久国产精品| 久久久神马电影| 国语精品免费视频| 亚洲最大福利视频网| 国产成人黄色av| 欧美韩国日本在线| 一区二区三区国| 日韩中文字幕第一页| 国产在线精品播放| 午夜啪啪福利视频| 国产精品爽爽爽| 91免费的视频在线播放| 青青草原av在线播放| 精品国产乱码久久久久久88av | 久久国产精品一区二区三区四区| 欧美日韩亚洲一二三| 一道精品一区二区三区| 久久久久久午夜| 国产一区二区不卡视频| 午夜dv内射一区二区| 国产精品黄视频| 国产黄视频在线| 国产噜噜噜噜噜久久久久久久久| 日韩偷拍一区二区| 亚洲图色在线| 国产精品狠色婷| 久久久久久久久久久久久国产精品| 国产乱码一区| 黄页网站大全在线观看| 日韩 欧美 自拍| 欧美激情精品久久久久| 国产成人拍精品视频午夜网站| 97热精品视频官网| 黄色91av| 人妻无码视频一区二区三区 | 亚洲专区中文字幕| 国产精品涩涩涩视频网站| 7777免费精品视频| 国产一区二区高清视频| 欧洲午夜精品久久久| 天天综合狠狠精品| 欧美激情国产高清| 国产精品久久久久99| 久久久久久一区二区三区| 99在线视频免费观看| 精品一区在线播放| 欧美日韩另类综合| 日日碰狠狠躁久久躁婷婷| 中文字幕日本最新乱码视频| 国产精品免费电影| 久久精品99久久香蕉国产色戒| 久久亚洲精品无码va白人极品| 国产免费一区二区三区香蕉精| 男人天堂成人在线| 欧美与黑人午夜性猛交久久久 | 国产精品久久亚洲| 精品激情国产视频| 日韩在线视频网站| 久久久女女女女999久久| 不卡视频一区二区三区| 国产在线精品二区| 韩国三级日本三级少妇99| 欧美精品无码一区二区三区| 日韩美女视频中文字幕| 日韩国产欧美亚洲| 日韩免费视频在线观看| 日韩免费在线看| 青草网在线观看| 欧美午夜小视频| 精品人妻少妇一区二区| 欧美精品亚洲| 韩国v欧美v日本v亚洲| 精品1区2区| 蜜臀av性久久久久蜜臀av| 国产视色精品亚洲一区二区| 国产免费久久av| 97人人干人人| 国产成人91久久精品| 日韩在线视频观看| 久久久国产精品免费| 国产精品黄色av| 在线观看免费黄色片| 无码人妻精品一区二区蜜桃百度|