生活随笔
收集整理的這篇文章主要介紹了
Django框架里的MVC思想
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
讓我們來研究一個簡單的例子,通過該實例,你可以分辨出,通過Web框架來實現的功能與之前的方式有何不同。 下面就是通過使用Django來完成以上功能的例子: 首先,我們分成4個Python的文件,(models.py , views.py , urls.py ) 和html模板文件 (latest_books.html )。
models.py:
| 1 | # models.py (the database tables) |
| 3 | from?django.db?import?models |
| 5 | class?Book(models.Model): |
| 6 | ????name?=?models.CharField(max_length=50) |
| 7 | ????pub_date?=?models.DateField() |
views.py:
| 1 | # views.py (the business logic) |
| 3 | from?django.shortcuts?import?render_to_response |
| 4 | from?models?import?Book |
| 6 | def?latest_books(request): |
| 7 | ????book_list?=?Book.objects.order_by('-pub_date')[:10] |
| 8 | ????return?render_to_response('latest_books.html', {'book_list': book_list}) |
urls.py:
| 1 | # urls.py (the URL configuration) |
| 3 | from?django.conf.urls.defaults?import?* |
| 6 | urlpatterns?=?patterns('', |
| 7 | ????(r'^latest/$', views.latest_books), |
latest_books.html:
| 01 | # latest_books.html (the template) |
| 03 | <html><head><title>Books</title></head> |
| 07 | {%?for?book?in?book_list?%} |
| 08 | <li>{{ book.name }}</li> |
不用關心語法細節,只要用心感覺整體的設計。 這里只關注分割后的幾個文件:
- models.py 文件主要用一個 Python 類來描述數據表。 稱為 模型(model) 。 運用這個類,你可以通過簡單的 Python 的代碼來創建、檢索、更新、刪除 數據庫中的記錄而無需寫一條又一條的SQL語句。
- views.py文件包含了頁面的業務邏輯。 latest_books()函數叫做視圖。
- urls.py 指出了什么樣的 URL 調用什么的視圖。 在這個例子中 /latest/ URL 將會調用 latest_books() 這個函數。 換句話說,如果你的域名是example.com,任何人瀏覽網址http://example.com/latest/將會調用latest_books()這個函數。
- latest_books.html 是 html 模板,它描述了這個頁面的設計是如何的。 使用帶基本邏輯聲明的模板語言,如{% for book in book_list %}
- 結合起來,這些部分松散遵循的模式稱為模型-視圖-控制器(MVC)。 簡單的說,?MVC?是一種軟件開發的方法,它把代碼的定義和數據訪問的方法(模型)與請求邏輯 (控制器)還有用戶接口(視圖)分開來。
這種設計模式關鍵的優勢在于各種組件都是 松散結合 的。這樣,每個由?Django驅動 的Web應用都有著明確的目的,并且可獨立更改而不影響到其它的部分。 比如,開發者 更改一個應用程序中的 URL 而不用影響到這個程序底層的實現。 設計師可以改變 HTML 頁面 的樣式而不用接觸 Python 代碼。 數據庫管理員可以重新命名數據表并且只需更改一個地方,無需從一大堆文件中進行查找和替換。
總結
以上是生活随笔為你收集整理的Django框架里的MVC思想的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。