Django框架的應(yīng)用-ubuntu使用方法-前篇

在使用Djiango框架前我們需要用虛擬環(huán)境來(lái)應(yīng)用(虛擬環(huán)境的安裝我就不寫(xiě)了百度都能找到),在創(chuàng)建的虛擬環(huán)境中安裝Django和mysql(我用的是mysql的數(shù)據(jù)庫(kù))

創(chuàng)建一個(gè)名字為 h1的虛擬環(huán)境

mkvirtualenv h1


這樣就代表創(chuàng)建好了

下載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ù)器入口

開(kāi)啟服務(wù)器 python manage.py runserver


鼠標(biāo)右鍵選擇打開(kāi)鏈接127.0.0.1你就會(huì)看到這樣的頁(yè)面

可以通過(guò)ctrl+c來(lái)停止服務(wù)器

設(shè)計(jì)介紹

本示例完成“圖書(shū)-英雄”信息的維護(hù),需要存儲(chǔ)兩種數(shù)據(jù):圖書(shū)、英雄

圖書(shū)表結(jié)構(gòu)設(shè)計(jì):

表名:BookInfo

圖書(shū)名稱(chēng):btitle

圖書(shū)發(fā)布時(shí)間:bpub_date

英雄表結(jié)構(gòu)設(shè)計(jì):

表名:HeroInfo

英雄姓名:hname

英雄性別:hgender

英雄簡(jiǎn)介:hcontent

所屬圖書(shū):hbook

圖書(shū)-英雄的關(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ù)庫(kù) Django默認(rèn)是sqlite數(shù)據(jù)庫(kù)


改為

DATABASES = {

?? ?'default': {

?? ??? ?'ENGINE': 'django.db.backends.mysql',

?? ??? ?'NAME': 'test2',

?? ??? ?'USER': '用戶名',

?? ??? ?'PASSWORD': '密碼',

?? ??? ?'HOST': '數(shù)據(jù)庫(kù)服務(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來(lái)導(dǎo)入模塊


類(lèi)名等于你數(shù)據(jù)庫(kù)里面的表名

類(lèi)下面的變量名等與你的字段名

models.*是你的數(shù)據(jù)類(lèi)型 因?yàn)槲覀冋{(diào)了django模塊所以我們用點(diǎn)語(yǔ)法來(lái)使用這個(gè)模塊

字段類(lèi)型

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:大文本字段,一般超過(guò)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í)例來(lái)表示的浮點(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寫(xiě)的日歷控件,和一個(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í)目錄下輸入

來(lái)遷移文件

在用python manage.py migrate

來(lái)執(zhí)行遷移

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容