Django簡介:Django是一個開放源代碼的Web應用框架,由Python寫成。採用了MVC的框架模式,即模型M,視圖V和控制器C。不過在Django實際使用中,Django更關註的是模型(Model)、模板(Template)和視圖(Views),稱為 MTV模式。Django的主要目的是簡便 ...
Django簡介:
Django是一個開放源代碼的Web應用框架,由Python寫成。採用了MVC的框架模式,即模型M,視圖V和控制器C。不過在Django實際使用中,Django更關註的是模型(Model)、模板(Template)和視圖(Views),稱為 MTV模式。Django的主要目的是簡便、快速的開發資料庫驅動的網站,它強調代碼復用,多個組件可以很方便的以“插件”形式服務於整個框架,Django有許多功能強大的第三方插件。
django是對象關係映射的 (ORM,object-relational mapping):以Python類形式定義你的數據模型,ORM將模型與關係資料庫連接起來,你可以通過簡單的API操作資料庫,同時你也可以在Django中使用原始的SQL語句。Django可以運行在Apache上,也可以運行在支持WSGI,FastCGI的伺服器上。支持多種資料庫,已經支持Postgresql,MySql, Sqlite3,Oracle。
django安裝
pip install Django
驗證django的安裝
import django
django.get_version()
創建一個django工程
django-admin.py startproject mysite
此時會自動生成一些目錄和文件,最外層的manage.py,像是一個運行的入口,通過命令行的調用可以完成一些常用的功能,比如:
運行django的自帶的web伺服器:
python manage.py runserver http://127.0.0.1:8080
常用的同步或創建資料庫表:
python manage.py syncdb
創建django project裡面的子項目
python manage.py startapp polls
創建超級管理員:
python manage.py createsuperuser
還有setttings.py文件,是django的配置文件。
urls.py文件,是django用於匹配url的文件,哪個網址執行哪些後臺代碼(view)是在這裡定義的。
Django MTV模式之----modle模型
Django採用了orm模式(對象關係映射),django的模型根據資料庫表的內容定義了一個python類,這個類裡面的成員和每一個資料庫表裡的欄位一一對應;
類裡面的成員類型也和資料庫表裡的欄位類型也是對應的,名字其實也可以起的一樣,看起來比較直觀。這樣每個類實例就代表了資料庫裡面的一條數據。
模型例子(在models.py里定義):
from django.db import models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
poll = models.ForeignKey(Poll)d
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
django設置資料庫:
settings.py文件裡面的database可以定義你要使用的資料庫類型,比如:
定義資料庫為sqlite
'ENGINE': 'django.db.backends.sqlite3'
定義資料庫為mysql
'ENGINE': 'django.db.backends.mysql'
執行django-admin.py startproject mysite, 然後再python manage.py runserver http://127.0.0.1:8080就算搭建了最簡單的一個django web伺服器,可通過 http://127.0.0.1:8080訪問測試。另外在install_apps裡面激活應用,執行pyhton manage.py syncdb,此時會根據定義的模型創建相應的資料庫。
資料庫操作例子:(假設File為定義的模型類)
獲取所有數據:
all_filelist = File.objects.all()
獲取所有數據並按某個欄位排序:
all_filelist = File.objects.all().order_by('-id')
執行sql語句:
cursor = connection。cursor()
cursor.extcute("select * from info_path")
chaannels = cursor.fetchall()
過濾數據:
list=File.objects.all().filter(xxx=xxx)
根據主鍵查詢
list=File.objects.all().get(id=1)
時間過濾:
results = File.objects.all().filter(time__range=(dayfrom, dayto))
創建新數據:
file = File(time=time,path=path,result=result)
file.save()
獲取數據:
file.time
file.path