簡(jiǎn)單前言一下畢設(shè),計(jì)劃是做創(chuàng)意設(shè)計(jì)和用戶研究相關(guān)的內(nèi)容涡拘,后續(xù)慢慢更出來整篇想法玲躯。為了足夠酷炫,我打算做成一個(gè)綁了域名的webapp鳄乏,若可能后續(xù)的測(cè)試也在上面進(jìn)行跷车。為了練手,我就從簡(jiǎn)單易學(xué)的webframework——django用起橱野,并編寫了它給出的范例程序朽缴。
工具
在進(jìn)入Django官網(wǎng)前,我已經(jīng)有了python2.7的安裝以及eclipse+pydev的開發(fā)環(huán)境仲吏,前端工具有TextWrangler不铆,但后來發(fā)現(xiàn)這些在Django強(qiáng)大的框架面前基本成為了Word一般的排版軟件的作用——嗯就是用來管理和排版各自的代碼蝌焚,除此之外,另外需要用到的工具就是終端(Mac系統(tǒng))誓斥。
安裝
可以踩著Django官網(wǎng)的writing your first app教程來只洒。
因?yàn)橐呀?jīng)安裝了python和pip,直接利用終端$pip install Django就行了劳坑。
然而我直接報(bào)了錯(cuò):
查加猜覺得是訪問某個(gè)文件夾的時(shí)候權(quán)限不夠毕谴,命令前加上sudo,另外按照黃字提示先更新pip到9.0.1版本距芬。
然后居然涝开。。框仔。已經(jīng)安裝了舀武。檢查一下版本沒問題這步就ok了。
創(chuàng)建
發(fā)現(xiàn)不寫東西短短一會(huì)我已經(jīng)忘記怎么開始一個(gè)項(xiàng)目了离斩。再去官網(wǎng)的教程查一下银舱,是
1.進(jìn)入終端,cd到想創(chuàng)建項(xiàng)目的目錄
2.$django-admin startproject mysite
3.就在當(dāng)前目錄創(chuàng)建了一個(gè)名為mysite的文件夾
文件結(jié)構(gòu)
引入數(shù)據(jù)庫之后還會(huì)多一個(gè)db文件跛梗,當(dāng)然我只用了默認(rèn)的sqlite3寻馏。
manage.py這個(gè)文件非常有意思,似乎就好像控制臺(tái)一樣核偿,訪問他可以調(diào)用Django框架下項(xiàng)目的各種命令诚欠。
印象深刻的就是在mysite目錄
$python manage.py runserver
再通過本地連接訪問http://127.0.0.1:8000/,就能在網(wǎng)頁中可視化編寫的web項(xiàng)目漾岳。然后一手開著eclipse轰绵,一手開著textwrangler,范例程序的所有更改都能一步一步邊改邊看尼荆。這是因?yàn)镈jango表示他會(huì)自動(dòng)重載頁面藏澳,但是教程說明一些諸如添加文件的操作不自動(dòng)觸發(fā)重載,這樣子我們可能需要重新加載一下這句代碼耀找。
項(xiàng)目中的app
app在項(xiàng)目中可能有多個(gè),app也可以反復(fù)在多個(gè)項(xiàng)目中使用业崖。
創(chuàng)建app野芒,使用的是
$python manage.py startapp app名字
范例是一個(gè)投票程序polls。
app的文件結(jié)構(gòu)
polls/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? __init__.py
? ? admin.py
? ? apps.py
? ? migrations/
? ? __init__.py
? ? models.py
? ? tests.py
? ? views.py
后來還會(huì)有templates和static双炕,存放html和樣式狞悲。
建立地址
通過編寫mysite/urls.py建立項(xiàng)目頁面的地址,polls/urls.py同理
可以看出妇斤,polls除了自己的index摇锋,還有detail丹拯,results以及vote三個(gè)子頁面。
建立頁面
編寫polls/views.py荸恕。
如上是之前提到的index乖酬,detail和result三個(gè)頁面的類,Choice和Question是從models文件夾傳遞過來的數(shù)據(jù)對(duì)象融求∫瘢可以看到除了其他對(duì)象,views還需要import相當(dāng)多的其他需要的類生宛。
建立數(shù)據(jù)模型
編寫polls/models.py
Question有2個(gè)屬性2個(gè)方法县昂,Choice有3個(gè)屬性1個(gè)方法。依賴于Django事先建立的models陷舅,對(duì)特定問題節(jié)省了很多的工作倒彰。
激活app
手動(dòng)打開mysite/setting.py。
在installed_apps = [ ]列表中手動(dòng)加入'polls.apps.PollsConfig', 然后在終端重運(yùn)行migrate命令來引入數(shù)據(jù)庫的相應(yīng)更改莱睁。
$ python manage.py migrate
在這個(gè)過程中還涉及到其他一些函數(shù)
$ python manage.py makemigrations polls ? ? ?//告訴Django你對(duì)數(shù)據(jù)模型做了一些更改并希望存成migration待讳。
$ python manage.py sqlmigrate polls 0001 ? ? //讓Django推測(cè)需要的數(shù)據(jù)庫模塊。
初始化數(shù)據(jù)Question和Choice
這需要打開python的manage.py開發(fā)環(huán)境
$python manage.py shell
然后引入polls.app的類Choice和Question缩赛,來給他們建立一些對(duì)象耙箍。
由于這些類基于Django原來的數(shù)據(jù)模型,他本來就具有很多的方法酥馍,所以創(chuàng)建對(duì)象將會(huì)十分方便辩昆。
創(chuàng)建了對(duì)象,如果之前的幾部分都編寫的順利旨袒,在本地運(yùn)行的網(wǎng)頁中會(huì)馬上看到可交互的內(nèi)容汁针。
admin和tests
admin是Django用來給管理員操作的一個(gè)頁面,也可以像views中的其他頁面對(duì)象一樣進(jìn)行定制砚尽。
tests是python腳本施无,用來debug。范例中的都比較刻意必孤。
最后還有templates用來存放html頁面猾骡,static用來存放css樣式來讓Django自動(dòng)搜索,值得注意的是目錄要寫到polls/style.css敷搪,因?yàn)楹退乃阉鞣绞接嘘P(guān)兴想。
--------------------------------------------->><<--------------------------------------------
第一個(gè)總結(jié)內(nèi)容張的有點(diǎn)開,體驗(yàn)這么一個(gè)范例程序在勞逸結(jié)合狀態(tài)差不多花了3天時(shí)間赡勘,后面還是加速為是嫂便。