Django學(xué)習(xí)筆記(一)

django


最近又開始了django的學(xué)習(xí),雖然學(xué)了不少,但越學(xué)越迷茫耶,可能python基礎(chǔ)不是很牢固。回到學(xué)校一定好好啃啃書。

本次學(xué)習(xí)參考了《Django中文教程》

下載地址

《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)

版本為1.11.3的django

然后需要安裝數(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í)中能磨礪自己。干巴爹~? ~(一∨一)~

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

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

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