在使用Djiango框架前我們需要用虛擬環(huán)境來應(yīng)用(虛擬環(huán)境的安裝我就不寫了百度都能找到)粘秆,在創(chuàng)建的虛擬環(huán)境中安裝Django和mysql(我用的是mysql的數(shù)據(jù)庫)
創(chuàng)建一個(gè)名字為 h1的虛擬環(huán)境
mkvirtualenv h1
下載Django和mysql
建議安裝1.8.2版本咸灿,這是一個(gè)穩(wěn)定性高迁筛、使用廣襟雷、文檔多的版本?pip install django==1.8.2
?mysql 安裝 pip install mysql
創(chuàng)建一個(gè)項(xiàng)目
這樣代表項(xiàng)目創(chuàng)建成功
進(jìn)入test1目錄岳瞭,目錄結(jié)構(gòu)如下圖:
manage,py :一個(gè)命令工具,可以使你用多種方式對(duì)Django項(xiàng)目進(jìn)行交互
test1下面的內(nèi)層目錄:項(xiàng)目的真正的python包
_init.py:一個(gè)空文件候齿,他告訴python這個(gè)目錄被看作一個(gè)python包
.setting:項(xiàng)目的配置
.urls.py:項(xiàng)目的URL聲明
wsgi.py:項(xiàng)目與WSGI兼容的Web服務(wù)器入口
開啟服務(wù)器 python manage.py runserver
鼠標(biāo)右鍵選擇打開鏈接127.0.0.1你就會(huì)看到這樣的頁面
可以通過ctrl+c來停止服務(wù)器
設(shè)計(jì)介紹
本示例完成“圖書-英雄”信息的維護(hù)熙暴,需要存儲(chǔ)兩種數(shù)據(jù):圖書、英雄
圖書表結(jié)構(gòu)設(shè)計(jì):
表名:BookInfo
圖書名稱:btitle
圖書發(fā)布時(shí)間:bpub_date
英雄表結(jié)構(gòu)設(shè)計(jì):
表名:HeroInfo
英雄姓名:hname
英雄性別:hgender
英雄簡(jiǎn)介:hcontent
所屬圖書:hbook
圖書-英雄的關(guān)系為一對(duì)多
創(chuàng)建一個(gè)應(yīng)用booktest
python manage.py startapp booktest
進(jìn)入到test1里面的setting文件將項(xiàng)目添加到DATABASE_APP里面我用的是vim編輯器
將DATABASES改成mysql數(shù)據(jù)庫 Django默認(rèn)是sqlite數(shù)據(jù)庫
DATABASES = {
?? ?'default': {
?? ??? ?'ENGINE': 'django.db.backends.mysql',
?? ??? ?'NAME': 'test2',
?? ??? ?'USER': '用戶名',
?? ??? ?'PASSWORD': '密碼',
?? ??? ?'HOST': '數(shù)據(jù)庫服務(wù)器ip慌盯,本地可以使用localhost',
?? ??? ?'PORT': '端口周霉,默認(rèn)為3306',
?? ?}
}
注意:需要在我們得站點(diǎn)得init文件?
import pymysql
pymysql.install_as_MySQLdb()
注意執(zhí)行這行代碼需要安裝pymysql這個(gè)包
進(jìn)入booktest這個(gè)應(yīng)用文件并進(jìn)入models.py
在models.py里面輸入
from django.db import models來導(dǎo)入模塊
類名等于你數(shù)據(jù)庫里面的表名
類下面的變量名等與你的字段名
models.*是你的數(shù)據(jù)類型 因?yàn)槲覀冋{(diào)了django模塊所以我們用點(diǎn)語法來使用這個(gè)模塊
字段類型
AutoField:一個(gè)根據(jù)實(shí)際ID自動(dòng)增長(zhǎng)的IntegerField,通常不指定
如果不指定亚皂,一個(gè)主鍵字段將自動(dòng)添加到模型中
BooleanField:true/false 字段俱箱,此字段的默認(rèn)表單控制是CheckboxInput
NullBooleanField:支持null、true灭必、false三種值?
CharField(max_length=字符長(zhǎng)度):字符串狞谱,默認(rèn)的表單樣式是 TextInput
TextField:大文本字段乃摹,一般超過4000使用,默認(rèn)的表單控件是Textarea
IntegerField:整數(shù)? ?
DecimalField(max_digits=None, decimal_places=None):使用python的Decimal實(shí)例表示的十進(jìn)制浮點(diǎn)數(shù)
DecimalField.max_digits:位數(shù)總數(shù)
DecimalField.decimal_places:小數(shù)點(diǎn)后的數(shù)字位數(shù)
FloatField:用Python的float實(shí)例來表示的浮點(diǎn)數(shù)
DateField([auto_now=False, auto_now_add=False]):使用Python的datetime.date實(shí)例表示的日期
參數(shù)DateField.auto_now:每次保存對(duì)象時(shí)跟衅,自動(dòng)設(shè)置該字段為當(dāng)前時(shí)間孵睬,用于"最后一次修改"的時(shí)間戳,它總是使用當(dāng)前日期伶跷,默認(rèn)為false
參數(shù)DateField.auto_now_add:當(dāng)對(duì)象第一次被創(chuàng)建時(shí)自動(dòng)設(shè)置當(dāng)前時(shí)間掰读,用于創(chuàng)建的時(shí)間戳,它總是使用當(dāng)前日期叭莫,默認(rèn)為false
該字段默認(rèn)對(duì)應(yīng)的表單控件是一個(gè)TextInput. 在管理員站點(diǎn)添加了一個(gè)JavaScript寫的日歷控件蹈集,和一個(gè)“Today"的快捷按鈕,包含了一個(gè)額外的invalid_date錯(cuò)誤消息鍵
auto_now_add, auto_now, and default 這些設(shè)置是相互排斥的食寡,他們之間的任何組合將會(huì)發(fā)生錯(cuò)誤的結(jié)果
TimeField:使用Python的datetime.time實(shí)例表示的時(shí)間雾狈,參數(shù)同DateField
DateTimeField:使用Python的datetime.datetime實(shí)例表示的日期和時(shí)間,參數(shù)同DateField
FileField:一個(gè)上傳文件的字段
ImageField:繼承了FileField的所有屬性和方法抵皱,但對(duì)上傳的對(duì)象進(jìn)行校驗(yàn)善榛,確保它是個(gè)有效的image
在項(xiàng)目和應(yīng)用同級(jí)目錄下輸入
來遷移文件
在用python manage.py migrate
來執(zhí)行遷移