
最近又開始了django的學(xué)習(xí),雖然學(xué)了不少,但越學(xué)越迷茫耶,可能python基礎(chǔ)不是很牢固。回到學(xué)校一定好好啃啃書。
本次學(xué)習(xí)參考了《Django中文教程》
下載地址
進(jìn)入正題
1、什么是Django
? ? ? 一個(gè)可以使Web開發(fā)工作愉快并且高效的Web開發(fā)框架。 使用Django,使你能夠以
最小的代價(jià)構(gòu)建和維護(hù)高質(zhì)量的Web應(yīng)用。
由于先前沒有學(xué)過任何Web框架,我把django 的理解成一個(gè)小型服務(wù)器的python web框架。事實(shí)證明,學(xué)django 前了解一下php之類的服務(wù)器語言可能效果更好 :)
2、學(xué)習(xí)心得
書籍方面,講的很好很好,但版本原因,本書使用的例子是django 1.1.0版本的,很老的版本,當(dāng)時(shí)的django還不成熟,有些功能在現(xiàn)在最新的版本下一句被去除,所以有些地方不是完全正確的,我也通過一些整理,把學(xué)習(xí)的心得整理了一下。
①環(huán)境搭建:
我使用的是python3,安裝django的方法是使用pip
pip install django
使用IPython查看是否安裝成功(其他可交互的編譯器也ok)

然后需要安裝數(shù)據(jù)庫,我使用的是mysql,要調(diào)用mysql,python3沒用了mysqldb,只能使用pymysql,使用pip安裝
pip install pymysql
②開始項(xiàng)目
在需要搭建的目錄下,運(yùn)行命令django-admin.py startproject helloworld,會(huì)創(chuàng)建一個(gè)helloworld目錄
這個(gè)目錄需要做一些配置才能讓django更好的工作
1、django的數(shù)據(jù)庫配置
進(jìn)入settings.py
DATABASES={
'default':{
'ENGINE':'django.db.backends.mysql', #調(diào)用mysql
'NAME':'test', ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#數(shù)據(jù)庫名
'USER':'root', ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#用戶名
'PASSWORD':'root', ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#密碼
'HOST':'', ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #默認(rèn)localhost
}
}
然后,在__init__.py里配置mysql
import pymysql
pymysql.install_as_MySQLdb()
這樣就把數(shù)據(jù)庫的準(zhǔn)備工作完成了
2、現(xiàn)在可以運(yùn)行django了,命令行進(jìn)入到有manage.py的文件夾,使用命令
python manage.py runserver
即后,便可以在http://127.0.0.1:8000/下訪問django了
但這個(gè)8000是默認(rèn)的,可以在runserver后輸入端口號(hào)。

當(dāng)以上的頁面顯示的時(shí)候說明已經(jīng)成功把django配置好了!
3、開始最經(jīng)典的helloworld
django是MVC模型,M是模型model,V是視圖view,C是控制器controller。
在這些自動(dòng)生成的文件里,并沒有這三個(gè)文件(模塊),那就自己創(chuàng)建一個(gè)吧!
①在工程里新建一個(gè)叫views.py的文件(當(dāng)然不一定得是這個(gè)名字,但能直觀地看出來是視圖模塊)
在里面輸入
from django.http import HttpResponse
def Hello_World(request):
? ? ? ? return HttpResponse("Hello,World!")
這里是從django.http包里導(dǎo)出HttpResponse對象,該對象會(huì)針對客戶端的請求(request)發(fā)送響應(yīng)(response)。這里響應(yīng)了Hello,World字符串,也可以響應(yīng)html文件。
注:每個(gè)視圖函數(shù)至少要有一個(gè)參數(shù),通常被叫作request。這是一個(gè)觸發(fā)這個(gè)視圖、包含當(dāng)前Web請求信息的
對象,是類django.http.HttpRequest的一個(gè)實(shí)例。在這個(gè)示例中,我們雖然不用request做任何事情,然
而它仍必須是這個(gè)視圖的第一個(gè)參數(shù)。
②找到urls.py文件,到入剛剛的views文件,并添加url對象
from views import Hello_World
urlpatterns=[
? ? ? url(r'^admin/',admin.site.urls),
? ? ? url(r'^hello/$',Hello_World),
]
第一行和第四行是添加的內(nèi)容,需要注意的是
1、Hello_World函數(shù)并不打上()括號(hào),因?yàn)樗鼈鬟f的是這個(gè)函數(shù)的指針
2、r'^hello/$' 其實(shí)是正則表達(dá)式,^h是必須以h為開頭,/$則是以/為結(jié)尾,如果只輸入hello的話,可能輸入no_hello也會(huì)被匹配進(jìn)去,hello_yo也會(huì)被包含進(jìn)去,通過正則表達(dá)式可以很好的配置地址。(另:django會(huì)自發(fā)的在地址后面增加/)
這時(shí)候進(jìn)入http://127.0.0.1:8000/hello/
就會(huì)看到Hello,World!
其實(shí)還可以輸入html格式的字符串給HttpResponse對象。例如
<h1 style='color:red;'>Hello,World!</h1>
就會(huì)輸出紅色的標(biāo)題HelloWorld
這就是簡單的一個(gè)應(yīng)用了(雖然low到不行),但既然可以傳遞html文件,那就可以通過前端搭建的網(wǎng)頁來潤色整個(gè)django了!
4、自身的不足的總結(jié)
不得不說,基礎(chǔ)很重要啊,而且學(xué)習(xí)資料的版本也很重要??!
①正則表達(dá)式的合理使用會(huì)減輕很多工作,所以有必要對正則表達(dá)式來一次全方位無死角的學(xué)習(xí)。雖然之前學(xué)過一些,但效率極低……
②數(shù)據(jù)庫的深入學(xué)習(xí)也是有必要的,可以更好地對服務(wù)器的數(shù)據(jù)與客戶端(前端)進(jìn)行交互。當(dāng)初學(xué)javascript的ajax沒有個(gè)后端真是頭大啊?,F(xiàn)在django可以更好地輔助學(xué)習(xí)了
③對python自身的官方庫可以說是零基礎(chǔ)了,沉迷于各種第三方的庫,導(dǎo)致os各種操作的庫沒有好好學(xué)習(xí)過,更別談什么應(yīng)用在實(shí)際項(xiàng)目中了……
呼~時(shí)間真快,學(xué)習(xí)的旅途還很遙遠(yuǎn),希望真正地能將學(xué)習(xí)到的東西運(yùn)用到生活中,更希望在學(xué)習(xí)中能磨礪自己。干巴爹~? ~(一∨一)~