Django簡(jiǎn)介:
Django是一個(gè)開放源代碼的Web應(yīng)用框架蠢熄,由Python寫成。采用了MVC的框架模式叉讥,即模型M图仓,視圖V和控制器C透绩。不過在Django實(shí)際使用中壁熄,Django更關(guān)注的是模型(Model)、模板(Template)和視圖(Views)狸臣,稱為 MTV模式烛亦。Django的主要目的是簡(jiǎn)便煤禽、快速的開發(fā)數(shù)據(jù)庫驅(qū)動(dòng)的網(wǎng)站岖赋,它強(qiáng)調(diào)代碼復(fù)用,多個(gè)組件可以很方便的以“插件”形式服務(wù)于整個(gè)框架唐断,Django有許多功能強(qiáng)大的第三方插件。
django是對(duì)象關(guān)系映射的 (ORM,object-relational mapping):以Python類形式定義你的數(shù)據(jù)模型恳啥,ORM將模型與關(guān)系數(shù)據(jù)庫連接起來钝的,你可以通過簡(jiǎn)單的API操作數(shù)據(jù)庫,同時(shí)你也可以在Django中使用原始的SQL語句沮峡。Django可以運(yùn)行在Apache上邢疙,也可以運(yùn)行在支持WSGI望薄,F(xiàn)astCGI的服務(wù)器上痕支。支持多種數(shù)據(jù)庫,已經(jīng)支持Postgresql,MySql, Sqlite3,Oracle另绩。
- django安裝
pip install Django
- 驗(yàn)證django安裝
import django
django.get_version()
- 創(chuàng)建一個(gè)django工程
django-admin.py startproject mysite
此時(shí)會(huì)自動(dòng)生成一些目錄和文件:
最外層的manage.py笋籽,像是一個(gè)運(yùn)行的入口车海,通過命令行的調(diào)用可以完成一些常用的功能侍芝,比如:
- 運(yùn)行django的自帶服務(wù)器:
python manage.py runserver http://127.0.0.1:8080
- 常用的同步或創(chuàng)建數(shù)據(jù)庫表:
python manage.py syncdb
- 創(chuàng)建django project里面的子項(xiàng)目:
python manage.py startapp polls
- 創(chuàng)建超級(jí)管理員:
python manage.py createsuperuser
另外還有setttings.py文件州叠,是django的配置文件凶赁。
urls.py文件哟冬,是django用于匹配url的文件,哪個(gè)網(wǎng)址執(zhí)行哪些后臺(tái)代碼(view)是在這里定義的。
Django MTV模式之----modle模型
Django采用了orm模式(對(duì)象關(guān)系映射)翰灾,django的模型根據(jù)數(shù)據(jù)庫表的內(nèi)容定義了一個(gè)python類,這個(gè)類里面的成員和每一個(gè)數(shù)據(jù)庫表里的字段一一對(duì)應(yīng)平斩。類里面的成員類型也和數(shù)據(jù)庫表里的字段類型也是對(duì)應(yīng)的咽块。這樣每個(gè)類實(shí)例就代表了數(shù)據(jù)庫里面的一條數(shù)據(jù)侈沪。模型主要是和數(shù)據(jù)相關(guān)的,和數(shù)據(jù)庫處理有緊密的聯(lián)系瘦馍。
例子(在models.py里定義模型):
from django.db import models
class File(models.Model):
path= models.CharField(max_length=200)
time= models.DateTimeField('date published')
result= models.CharField(max_length=200)
class Choice(models.Model):
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
django設(shè)置數(shù)據(jù)庫:
settings.py文件里面的database可以定義你要使用的數(shù)據(jù)庫類型:
- 定義數(shù)據(jù)庫為sqlite
'ENGINE': 'django.db.backends.sqlite3'
- 定義數(shù)據(jù)庫為mysql
'ENGINE': 'django.db.backends.mysql'
執(zhí)行django-admin.py startproject mysite
, 然后再運(yùn)行python manage.py runserver http://127.0.0.1:8080
就算搭建了一個(gè)簡(jiǎn)單的django web服務(wù)器情组,可訪問http://127.0.0.1:8080 測(cè)試院崇。另外在install_apps里面激活polls(在后面添加應(yīng)用名字)亚脆,執(zhí)行pyhton manage.py syncdb
濒持,此時(shí)會(huì)根據(jù)定義的模型創(chuàng)建相應(yīng)的數(shù)據(jù)庫寺滚。
數(shù)據(jù)庫操作例子:
- 獲取所有數(shù)據(jù):
all_filelist = File.objects.all()
- 獲取所有數(shù)據(jù)并按某個(gè)字段排序:
all_filelist = File.objects.all().order_by('-id')
- 執(zhí)行sql語句:
cursor = connection村视。cursor()
cursor.extcute("select * from info_path")
chaannels = cursor.fetchall()
- 過濾數(shù)據(jù):
list=File.objects.all().filter(result=true)
- 根據(jù)主鍵查詢
list=File.objects.all().get(id=1)
- 時(shí)間過濾:
results = File.objects.all().filter(time__range=(dayfrom, dayto))
- 創(chuàng)建新數(shù)據(jù):
file = File(time=time,path=path,result=result)
file.save()
- 獲取數(shù)據(jù):
file.time
file.path