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

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

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