国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python的Django框架下管理站點的基本方法

2020-01-04 18:03:01
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了Python的Django框架下管理站點的基本方法,需是Django站點部署的基礎,要的朋友可以參考下

對于某一類網站, 管理界面 是基礎設施中非常重要的一部分。 這是以網頁和有限的可信任管理者為基礎的界面,它可以讓你添加,編輯和刪除網站內容。 一些常見的例子: 你可以用這個界面發布博客,后臺的網站管理者用它來潤色讀者提交的內容,你的客戶用你給他們建立的界面工具更新新聞并發布在網站上,這些都是使用管理界面的例子。

但是管理界面有一問題: 創建它太繁瑣。 當你開發對公眾的功能時,網頁開發是有趣的,但是創建管理界面通常是千篇一律的。 你必須認證用戶,顯示并管理表格,驗證輸入的有效性諸如此類。 這很繁瑣而且是重復勞動。

Django 在對這些繁瑣和重復的工作進行了哪些改進? 它用不能再少的代碼為你做了所有的一切。 Django 中創建管理界面已經不是問題。

這一章是關于 Django 的自動管理界面。 這個特性是這樣起作用的: 它讀取你模式中的元數據,然后提供給你一個強大而且可以使用的界面,網站管理者可以用它立即工作。

請注意我們建議你讀這章,即使你不打算用admin。因為我們將介紹一些概念,這些概念可以應用到Django的所有方面,而不僅僅是admin

django.contrib 包

Django自動管理工具是django.contrib的一部分。django.contrib是一套龐大的功能集,它是Django基本代碼的組成部分,Django框架就是由眾多包含附加組件(add-on)的基本代碼構成的。 你可以把django.contrib看作是可選的Python標準庫或普遍模式的實際實現。 它們與Django捆綁在一起,這樣你在開發中就不用“重復發明輪子”了。

管理工具是本書講述django.contrib的第一個部分。從技術層面上講,它被稱作django.contrib.admin。django.contrib中其它可用的特性,如用戶鑒別系統(django.contrib.auth)、支持匿名會話(django.contrib.sessioins)以及用戶評注系統(django.contrib.comments)。這些,我們將在第十六章詳細討論。在成為一個Django專家以前,你將會知道更多django.contrib的特性。 目前,你只需要知道Django自帶很多優秀的附加組件,它們都存在于django.contrib包里。

激活管理界面

Django管理站點完全是可選擇的,因為僅僅某些特殊類型的站點才需要這些功能。 這意味著你需要在你的項目中花費幾個步驟去激活它。

第一步,對你的settings文件做如下這些改變:

將'django.contrib.admin'加入setting的INSTALLED_APPS配置中 (INSTALLED_APPS中的配置順序是沒有關系的, 但是我們喜歡保持一定順序以方便人來閱讀)

保證INSTALLED_APPS中包含'django.contrib.auth','django.contrib.contenttypes'和'django.contrib.sessions',Django的管理工具需要這3個包。 (如果你跟隨本文制作mysite項目的話,那么請注意我們在第五章的時候把這三項INSTALLED_APPS條目注釋了。現在,請把注釋取消。)

確保MIDDLEWARE_CLASSES 包含'django.middleware.common.CommonMiddleware' 、'django.contrib.sessions.middleware.SessionMiddleware' 和'django.contrib.auth.middleware.AuthenticationMiddleware' 。(再次提醒,如果有跟著做mysite的話,請把在第五章做的注釋取消。)

運行 python manage.py syncdb 。這一步將生成管理界面使用的額外數據庫表。 當你把'django.contrib.auth'加進INSTALLED_APPS后,第一次運行syncdb命令時, 系統會請你創建一個超級用戶。 如果你不這么作,你需要運行python manage.py createsuperuser來另外創建一個admin的用戶帳號,否則你將不能登入admin (提醒一句: 只有當INSTALLED_APPS包含'django.contrib.auth'時,python manage.py createsuperuser這個命令才可用.)

第三,將admin訪問配置在URLconf(記住,在urls.py中). 默認情況下,命令django-admin.py startproject生成的文件urls.py是將Django admin的路徑注釋掉的,你所要做的就是取消注釋。 請注意,以下內容是必須確保存在的:

 

 
  1. # Include these import statements... 
  2. from django.contrib import admin 
  3. admin.autodiscover() 
  4.  
  5. # And include this URLpattern... 
  6. urlpatterns = patterns(''
  7. # ... 
  8. (r'^admin/', include(admin.site.urls)), 
  9. # ... 

當這一切都配置好后,現在你將發現Django管理工具可以運行了。 啟動開發服務器(如前:`` python manage.py runserver`` ),然后在瀏覽器中訪問:http://127.0.0.1:8000/admin/

將你的Models加入到Admin管理中

有一個關鍵步驟我們還沒做。 讓我們將自己的模塊加入管理工具中,這樣我們就能夠通過這個漂亮的界面添加、修改和刪除數據庫中的對象了。

在其中,我們定義了三個模塊: Publisher 、 Author 和 Book 。

在`` books`` 目錄下(`` mysite/books`` ),創建一個文件:`` admin.py`` ,然后輸入以下代碼:

 

 
  1. from django.contrib import admin 
  2. from mysite.books.models import Publisher, Author, Book 
  3.  
  4. admin.site.register(Publisher) 
  5. admin.site.register(Author) 
  6. admin.site.register(Book) 

這些代碼通知管理工具為這些模塊逐一提供界面。

完成后,打開頁面 `` http://127.0.0.1:8000/admin/`` ,你會看到一個Books區域,其中包含Authors、Books和Publishers。 (你可能需要先停止,然后再啟動服務(`` runserver`` ),才能使其生效。)

現在你擁有一個功能完整的管理界面來管理這三個模塊了。 很簡單吧!

花點時間添加和修改記錄,以填充數據庫。 如果你跟著第五章的例子一起創建Publisher對象的話(并且沒有刪除),你會在列表中看到那些記錄。

這里需要提到的一個特性是,管理工具處理外鍵和多對多關系(這兩種關系可以在`` Book`` 模塊中找到)的方法。 作為提醒,這里有個`` Book`` 模塊的例子:

 

 
  1. class Book(models.Model): 
  2. title = models.CharField(max_length=100) 
  3. authors = models.ManyToManyField(Author) 
  4. publisher = models.ForeignKey(Publisher) 
  5. publication_date = models.DateField() 
  6.  
  7. def __unicode__(self): 
  8. return self.title 

在Add book頁面中(`` http://127.0.0.1:8000/admin/books/book/add/`` ),`` 外鍵`` publisher用一個選擇框顯示,`` 多對多`` 字段author用一個多選框顯示。 點擊兩個字段后面的綠色加號,可以讓你添加相關的記錄。 舉個例子,如果你點擊Publisher后面的加號,你將會得到一個彈出窗口來添加一個publisher。 當你在那個窗口中成功創建了一個publisher后,Add book表單會自動把它更新到字段上去 花巧.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大安市| 光泽县| 巫山县| 邮箱| 文登市| 陆丰市| 阳高县| 兴文县| 永靖县| 名山县| 丽水市| 定陶县| 汽车| 高要市| 宁晋县| 彭州市| 萨迦县| 盈江县| 阿坝| 天津市| 新乐市| 抚宁县| 安新县| 晋城| 贡嘎县| 杨浦区| 长岛县| 额敏县| 岑巩县| 望奎县| 怀集县| 陇川县| 洱源县| 渭南市| 台安县| 香港| 湄潭县| 茶陵县| 南昌市| 阿城市| 禹州市|