Django 牢牢地遵循這種 MVC 模式,能夠稱得上是一種 MVC 框架。如下是 Django 中 M、V 和 C 各自的含義:python
因爲 C 由框架自行處理,而 Django 裏更關注的是模型(Model)、模板(Template)和視圖(Views),Django 也被稱爲 MTV 框架 。在 MTV 開發模式中:shell
models.py就是Django裏面的建表所需的數據模型的描述: 命令: python manage.py init 初始化數據庫 python manage.py sqlall [appname] 查看app的CREATE TABLE的語句,包括原始數據,建立索引等. python manage.py sqlreset [appname] 修改models,不保留之前數據,進行重置數據庫,更新表。 python manage.py validate 用來排錯 python manage.py syncdb 用來建表 python manage.py sql databasename 用來查看已建立數據庫表結構 數據庫建表過程: 1.建立應用程序 python manage.py startapp appname 2.用python代碼寫models.py,建立數據模型 from django.db import models class Publisher(models.Model): name = models.CharField(maxlength=30) address = models.CharField(maxlength=50) city = models.CharField(maxlength=60) state_province = models.CharField(maxlength=30) country = models.CharField(maxlength=50) website = models.URLField()3.模型的安裝 編輯settings.py 添加: INSTALLED_APPS=( 'mysite.appname', } 4.建立數據庫表: python manage.py validate (驗證模型有效性) python manage.py sqlall appname (生成CREATE TABLE語句) python manage.py syncdb (執行上一步產生的SQL語句,簡表。不執行上一句也能夠建,也能夠把上一句執行產生的SQL語句放入SQL客戶端去執行,syncdb 僅僅建立數據庫中不存在的表,而不會同步模型的修改或者刪除到數據庫) 5.插入和更新數據 插入數據: 定義對象 p = Publisher(.....) //將新的內容放到Publisher裏面賦給對象p p.save() //完成插入 上面至關於SQL語言: INSERT INTO book_publisher (name, address, city, state_province, country, website) VALUES ('Apress', '2855 Telegraph Ave.', 'Berkeley', 'CA', 'U.S.A.', 'http://www.apress.com/');更新數據: p.name = 'NewName' //修改對象p的名字 p.save() //完成存儲 上面至關於SQL語言: UPDATE book_publisher SET name = 'NewName', address = '2855 Telegraph Ave.', city = 'Berkeley', state_province = 'CA', country = 'U.S.A.', website = 'http://www.apress.com' WHERE id = 52;選擇對象: Publisher.objects.all() 至關於SQL: SELECT id, name, address, city, state_province, country, website FROM book_publisher;數據過濾: Publisher.objects.filter(name="NewName") 至關於SQL語句: SELECT id, name, address, city, state_province, country, website FROM book_publisher WHERE name = 'NewName'; 縮小範圍: Publisher.objects.filter(country="U.S.A.", state_province="CA") 至關於SQL語句: SELECT id, name, address, city, state_province, country, website FROM book_publisher WHERE country = 'U.S.A.' AND state_province = 'CA'; 模糊匹配: Publisher.objects.filter(name__contains="press") 在 name 和 contains 之間有雙下劃線。象Python本身同樣,Django也使用 雙下劃線來作一些小魔法,這個 __contains 部分會被Django轉換成 LIKE SQL語句:app SELECT id, name, address, city, state_province, country, website FROM book_publisher WHERE name LIKE '%press%';獲取單個對象: Publisher.objects.get(name="Apress Publishing")數據排序: Publisher.objects.order_by("name") 至關於SQL語句: SELECT id, name, address, city, state_province, country, website FROM book_publisher ORDER BY name; 能夠支持多個字段排序: Publisher.objects.order_by("state_provice", "address") 也能夠逆向排序: Publisher.objects.order_by("-name") 添加‘-’同時排序和過濾: Publisher.objects.filter(country="U.S.A.").order_by("-name") 至關於SQL語句: SELECT id, name, address, city, state_province, country, website FROM book_publisher WHERE country = 'U.S.A' ORDER BY name DESC; 限制返回數據: Publisher.objects.all()[Number] //Number能夠換成想要顯示的位置下標 至關於SQL語句: SELECT id, name, address, city, state_province, country, website FROM book_publisher ORDER BY name LIMIT 1; 刪除對象:p = Publisher.objects.get(name="NewName") p.delete() 修改數據庫表結構: 添加字段: 首先,在開發環境中執行下面的步驟(也就是說,不是在發佈服務器上):框架
ALTER TABLE books_book DROP COLUMN test;刪除表:DROP TABLE books_book |