邊做邊學,Python&Django實戰教程-01前言

任何不以結婚為目的的戀愛都是耍流氓!

任何不做項目就想學會編程的人也是在耍流氓!

任何照本宣科做項目的人更是在耍流氓!

怎麼樣才能學好python, 怎麼樣才能學好django,怎麼樣才能學好編程?

雖然我還沒有學好python和django,但是我想我找到了學習的方法。

動手!動手!動手!

對,就是三個動手,但是每個動手的含義是不一樣的。

先來說說我的經歷:

  • 從大二到研究生畢業,我用了5年的matlab
  • 從12年工作到現在,我用了4年的c#
  • 今年年初公司開始推行全棧,開始學習c++
  • 兩三個月前,出於個人興趣開始學習python和django

先別急著罵我好高騖遠,同時學習好幾門語言我也是被逼的!python和django才是我的真愛!

你們肯定以為我想說興趣是最好的老師,NO!聽我接著吹!

想當初~

學matlab是因為接了學校的一個自然科學基金,你懂的,通過了就有1000塊錢拿。聽到消息後,3個SB就組團去報名了,過程是這樣的:喜歡各種兼職各種發小廣告的學渣室友找到了我,只是因為我大一在電腦城搞了一個暑假的兼職(對,就是修電腦),然後因為項目需要3到5個人就去找了一個天天打DOTA的東北哥們兒,只是因為這哥們只要名不要利,錢到手後他那塊拿出來喝酒!媽蛋,現在回過頭來想想,當初的奇葩組合竟然迎合了現如今最流行的商業模式:一個能搞項目的,帶著一兩個能幹活的,還有十幾個靠關係進來啥也不幹就等分錢的!好吧,扯遠了,最後項目也是如期完成了。怎麼完成的?是我一個函數一個函數的百度回來的:matlab怎麼載入圖像,I = imread(image.png);matlab怎麼得到圖像大小,[M,N] = size(I);matlab怎麼做循環:for i = 1 :m ... end。再到後來如法炮製,給另外兩個同學寫了畢業設計的程序,再再後來就當了槍手專業代寫matlab圖像處理程序,讀研沒拿家裡一分錢還買了手機和筆記本。。。

c#學的也很奇葩。畢業之後陰差陽錯的去做了桌面程序開發,當初都沒聽說過c#,還以為是叫c井呢。。。上來就扔到項目里去了:給你一個星期時間看書,一個星期之後開始修bug。。。好吧,看書,看的什麼書?《c#高級編程》!對,沒錯,就是1557頁的那本!哥們頭兩天還背著它公司宿舍來回跑,第三天就把它給拆了,把第一部分弄出來重新粘了個書皮。。。當然一個星期就連第一部分也沒看完,反正就上去修bug了,還好流程式控制制語句跟matlab也差不多,還好哥們邏輯能力也鍛鍊出來了,扯著百度咱就開始風風火火的幹了,任務也都能按時甚至提前完成。。。

三四年的工作經驗之後,我知道了設計模式,知道了面向對象編程,知道了要提高代碼的可讀性,知道了代碼簡潔之道。

那麼問題也來了,同志們!

從今年年初開始學習c++到現在,我看了好幾本書,而且時間很充裕,我是很認真的在看。但是截止到今天為止,我還是不敢去接公司的c++項目!

兩個月前,當我準備學習python和Django的時候,我習慣性的打開了知乎。想看看大牛們會推薦哪些入門書籍和教程。 分別搜索python和Django兩個關鍵字,看到了很多我感興趣的話題:

Python 的練手項目有哪些值得推薦?

python django學的很迷茫怎麼辦?

Python 應該怎麼去練習和使用?

Python 學習完基礎語法知識後,如何進一步提高?

Django 學習順序及入門要求?

想用Django+ Bootstrap寫一個網站, 有哪些比較系統完整的書或者視頻可以參考?

學完python後,該如何開始django學習?

想學習Python Django,請推薦從入門到精通各個階段的好書?

說實話我看完了這些問題的所有答案,答主們都很認真,讓我對於這個自己不熟悉的領域有了簡單的了解。

也是精心挑選吧,對於python,我選擇了廖雪峰的官方網站這個教程;對於django,我選擇了 Tango With Django。以這兩個為主,當然還有其他的,head first啊,官方文檔啊。。

當我利用下班後的空閑時間讀完兩個教程後,也確實不再是一頭霧水了,這讓我有了一點小小的成就感。感覺至少自己比身邊的人多懂一些。但是短暫的喜悅過後我同樣遇到了這樣的問題:

python django學的很迷茫怎麼辦?

本人學生,零編程基礎,在學習python的過程中越學越迷茫,感覺像無頭蒼蠅一樣,來知乎取經,下面進入正題吧: 我是先看了中谷的python教學視頻,然後跟著慕課網上的python教程把題目做了一遍,然後就開始看django,看了「django web開發指南」,又看「django官方文檔」,在看django這兩本書的時候簡直是一頭霧水,我有種感覺是python基礎沒學好的原因所以理解不了django,實在不知道在說什麼,就照著書上的例子練,同時我也在網上找了好多blog應用的實例,想試著自己寫一個blog網站,來增加一下對django的認識,才發現前端也需要學習,然後就在w3c上學基本的前端,發現前端要學一大堆,然後學著學著就迷茫了,最近一直很迷茫不知道自己該幹什麼,下一步該幹什麼,實在不想像無頭蒼蠅一樣。

這哥們簡直就是在說我嘛!

但是怎麼辦?我始終相信這句話:「臨淵羨魚,不如退而結網」。所以我不會因為迷茫而停止不前。

回想起自己剛開始用matlab做圖像處理的時候,什麼都不會就敢接活幫別人做畢設,現如今做了幾年編程工作之後再學習新語言反倒是有點扭捏了!我在想什麼呢?為啥就沒了當年的銳氣了呢?我在想面向對象,我在想代碼規範,我在想怎麼寫高質量的代碼。。

TMD,傻了嗎,低質量的代碼還寫不出來呢,談什麼高質量啊!!!

所以,如果一個完全不懂編程的人和一個有若干年編程經驗的人同時學python,我反倒會看好那個完全不懂編程的人!

哎呀,我這也算是頓悟了嗎?哈哈。那就動手幹起來吧!

這個時候當然還是要先問問自己這樣的一個問題:

學會了Python你要用它幹什麼?學會了Django你要用它幹什麼?

我很清楚自己一直想搭一個博客,寫博客的好處我就不多說了。如果你還沒想到用python幹什麼,我建議先來搭個博客。這裡當然說的是自己建站寫博客,而不是在csdn什麼的。為什麼要自己建站?找工作的時候這可是看的見摸的著的項目經驗啊,親們。

有了目標就不要讓手閑著,動手!動手!動手! 照著教程操作不是真正的動手,動手找方向,動手找解決辦法,動手做,這才是真正的動手!動手!動手

我果斷的跑到Github搜索了「django blog」,然後就自然而然的找到了zinnia。為什麼用現有的框架?因為我給自己制定了這樣的學習曲線:

  1. 用框架搭一個博客,博客上線,理解博客框架內部機制
  2. 用python寫一個blog框架
  3. 讀zinnia源碼

當然這不是一個短期內能實現的目標,也許需要一年、兩年甚至更多時間。但是一旦你開始動手了,你就會找到更細緻的目標。比如,目前我的第一個目標完成了60%左右,我的博客已經上線了,在動手的過程中,我找到了更具體的方向,為了達成這個目標,下面的東西是我要學的:

  1. zinnia搭建博客,部署到阿里雲ECS伺服器--------------------已完成
  2. 掌握Git基本命令,用於版本控制和代碼上傳伺服器----------已完成
  3. 入門python和django,基本概念和語法需要有------------已完成
  4. 掌握基本的linux命令,用於部署 ----------------------------已完成
  5. markdown,用於寫博客 ------------------------------------已完成
  6. 理解web請求,MVC,MVT等blog框架內部機制 ------------未完成
  7. 其它網站建設技巧---------------------------------------------未完成
  8. 擁有一個微信公眾號 ------------------------------------------未完成
  9. 待發掘 -------------------------------------------------------未完成

我是一邊動手做,一邊截圖做記錄以便寫blog,這樣速度至少慢了一半,但是很紮實。每一步我都可以回過頭去看,為了讓讀者更好的理解我會重新組織語言、組織邏輯、看看是不是有幾個步驟可以合併。。。

學而不思則罔 思而不學則殆!寫博客讓我做到了邊學邊思考。

我還申請了知乎專欄,因為是知乎開闊了我的視野,讓我從「不知己不知」過渡到「知己不知」。

個人認為幫助你過渡到「知己不知」的人是最值得感謝的,想一想你要學習新的知識打開了搜索引擎卻想不到用什麼關鍵字,或者你壓根不知道自己該學什麼,無知是多麼可怕啊!

這就是老話說的,「師傅領進門」。

希望我的一大通廢話領你進門了,讓你找到了學習的方法~

我的專欄:邊做邊學,python-django - 知乎專欄

我會把所有的學習過程記錄在這裡,歡迎大家一起來討論。如果你開始動手了卻找不到下一步的方向,也歡迎來參考我的記錄。

最後幾句話與大家共勉:

  • 照著教程操作不是真正的動手,動手找方向,動手找解決辦法,動手做,這才是真正的動手,動手,動手
  • 想一想自己是真正的有十年工作經驗,還是一年的經驗重複了九年!
  • 活到老,學到老。學到的不止是知識,進步讓人身心愉悅,整個人都是正能量

推薦閱讀:

是否框架的目的是不一樣的?
關於零基礎學習 Python 有什麼好的建議?
Vim 中如何對 Python 進行代碼補全?
知乎後台為什麼用python?
開發個人網站 Node.js 和 Django 該如何選擇?

TAG:Python | Django框架 |