學Python Django學得很迷茫,怎麼辦?

本人學生,零編程基礎,在學習python的過程中越學越迷茫,感覺像無頭蒼蠅一樣,來知乎取經,下面進入正題吧:
我是先看了中谷的python教學視頻,然後跟著慕課網上的python教程把題目做了一遍,然後就開始看django,看了「django web開發指南」,又看「django官方文檔」,在看django這兩本書的時候簡直是一頭霧水,我有種感覺是python基礎沒學好的原因所以理解不了django,實在不知道在說什麼,就照著書上的例子練,同時我也在網上找了好多blog應用的實例,想試著自己寫一個blog網站,來增加一下對django的認識,才發現前端也需要學習,然後就在w3c上學基本的前端,發現前端要學一大堆,然後學著學著就迷茫了,最近一直很迷茫不知道自己該幹什麼,下一步該幹什麼,實在不想像無頭蒼蠅一樣。
那麼問題來了:
1.請問下一步我該幹什麼了?(我真的是不知道該往那個方向?階段?)
2.在實際工作中,python工程師工作到底是做哪一塊的?(儘可能的詳細點)
3.如果從事django開發,還需要哪些技能?要學前端么?
4.如果想去實習需要達到什麼水平?
已經迷茫幾天了,知道知乎上大神很多,希望前輩能指點指點,小弟不勝感激。。。


很多程序員,在學習一門新技術的時候,都會陷入像題主你這樣迷茫的狀態。我也一樣。而且不止陷入一次兩次。比如學習新的框架的時候,學習新的語言的時候,學習移動開發的時候。

這事兒多了以後,我就在想。不對,肯定有哪裡不對,看著StackOverflow也好,Github也好,上面那麼多的高手,回答各種問題。而很多人居然還是在校的學生。我有種感覺,這肯定是我的方法出了問題,肯定是在某個很深很深的根源上出了問題。大家都是人,一天三餐吃喝拉撒,學生雖然自由時間多一些,但是我們畢竟也幹了這麼多年的程序員。新東西每天都在往出冒,不可能有人能那麼快得全部掌握。而現實是確實出一種新技術,瞬間一堆高手就冒了出來。這事兒,有問題。

於是我就開始找問題的根源。其實這事兒沒這麼複雜,只要靜下心來,不要看到一個新技術就急慌慌的去學,很快就能反映過來。根源其實就是兩點:

1. 計算機技術的底層原理從來沒有變過。
2. 任何一門新技術都是人為寫成的。


這是我在迷茫了N次後,靜下心來,製造出的自己在技術海洋上的指南針。對不對好不好不敢說,大家批判這看吧。

在學習任何一門新技術新框架新語言時,我會先把這兩條引用到整個學習過程中去。

1. 計算機的底層原理從來沒有變過。
網路需要通訊原理,編程需要數據結構與演算法。一個列表的排序不管你是JAVA是C是PYTHON,哪怕你調用的函數名字千差萬別,最後的演算法其實疏通同歸。你大可不去查文檔自己寫一個出來。一個一個網頁上得表單,不管哪個框架哪個語言哪個MVC,最後都要歸於一個HTTP的POST,最後都要連接上資料庫,寫進去存起來。

這就是原理不變。你要先把這個道理時時刻刻的記在心裡。當遇到看不懂的東西,迷茫的時候,去想想這個函數到底做了什麼,然後從那個不變得原理反推回來,大部分時候你會發現很多新技術不過是早已有的技術的重組與包裝而已。

2. 任何一門新技術都是人為寫成的。
這裡的新技術主要指的是目前百花齊放的各種框架啊庫啊類啊語言啊一類的。一開始我也很很多人一樣,覺得哇好牛好酷好高大上。但是慢慢的,我有一種被欺騙的感覺,這種感覺類似於某類產品持續的營銷,今天我們有這個口味,明天我們有哪個口味。區別只是一個加了蜂蜜一個沒加。

因此在總結了第一個『原理不變『之後,很自然的我推出了第二個』人為寫成『。意思是不管看起來多麼新潮,多麼高大上的語言,它首先要遵循第一條原理不變的道理。而如果在使用它的過程中,發現了某些有違第一條的感覺函數,方法,邏輯。那麼百分之百這個函數方法邏輯只是做了人為的包裝而已。去看文檔,不要糾結為什麼,作者當時可能腦袋進水,不要跟著他一起跳坑。

簡單說,什麼Django, Flask, Web.py,CSS, HTML5, ...別被那些炫名詞的給洗腦了。原理原理原理,本質本質本質!不要誠惶誠恐,就當它是爛泥巴搓圓弄扁踩兩腳,抱著這種心態來學才對。


簡單解釋了一下我草草歸納的兩條規律。回到答主的問題上來。

你的第一個問題是我該幹什麼?很簡單,做第一個網站,做第二個網站,做第三個網站。做網站做吐了就去做做手機APP,做的無聊的就去玩玩爬蟲。記得把你所有寫得東西都扔到GITHUB上去,每天在SO上答問題問問題。就這樣。

不要做到完美。記小時候玩泥巴么?就那麼玩。堆個城堡起來,踢兩腳,扔一邊兒,再堆一個長城起來,再扔一邊兒。玩的時候時刻記得我說的那兩條規律。

2.在實際工作中,python工程師工作到底是做哪一塊的?(儘可能的詳細點)
親,請先找到工作。

3.如果從事django開發,還需要哪些技能?要學前端么?

你學的不是Django開發,你學的應該是計算機科學中,網路應用方向的一部分。這才應該是學什麼Php網站開發,Python開發真正應該叫的名字。 Django只是你工具箱里的一個工具而已,比方說它是把鋸子。這個鋸子的牌子叫做Django. 其他生產鋸子的廠家包括但不限於Php, Flask, Java, Go....但是他們的本質都是鋸子。都可以做一樣的事情。有的廠家在鋸子上安了個小手電筒,於是它的牌子的鋸子也許多了一些功能。這就是框架與框架的區別。

所以,你需要的不是Django開發的技能,你需要的是網路開發與管理的技能。如果題主專註於做網站的話,相信我,資料庫資料庫資料庫!一個設計良好,結構合理的資料庫,是任何優秀網站的前提。

4.如果想去實習需要達到什麼水平?
別想,別問,做吧。當你能按照上面說得,持續不斷的更新你得個人項目,持續不斷的在SO也好,V2EX也好上累積你的資歷,持續不斷的,抓住計算機科學的本質去學習。實習?這是個事兒么?


這是個去年的老問題,可能題主的疑惑已經解決了,這個答案主要寫給有類似疑惑的人看。如果你學編程時感覺要學的東西很多,毫無頭緒,可以來看看這個回答。

題主的這種情況,我稱之為「深入學習綜合征」。
具體癥狀表現是:想學個什麼或是寫個什麼,於是就開始學習相關資料,發現好多東西要學啊,頭大……學著學著發現還得學另外一個領域的知識,我勒個去……

這不是正確的學習方法啊,正確的方法是增量開發,用啥學啥嘛!!

回想高中時學數學的過程,一開始學平面幾何的時候,我們也沒去學解析幾何的方法吧?剛學增函數、減函數的時候,我們也沒用導數解決問題吧?學編程也類似,對於任何知識,先只深入到現在夠用的程度,把東西碼出來再說。


就拿題主寫個Blog這個需求來舉例,我現在自己模擬一下學習過程:

Python,俺會import,會用dir()查看屬性,會用A.a()調用,好,夠了。
Django,看起來好麻煩啊,問大牛A,他推薦了Flask,額,怎麼還是有點麻煩,又聽說有個Bottle,恩,就這個吧。
MySQL,靠,SQL語句怎麼這麼蛋疼……誒?有個號稱NoSQL的資料庫叫Mongo,就它了。

決定用這些東西來寫,接下來就開始一步步碼:

第一步——用Bottle顯示一個頁面(上網找段代碼,依樣畫葫蘆):

from bottle import get, run

@get("/")
def homepage():
return "&

Hello World!&"

run(host="", port=25252)

搞定了:

第二步——從資料庫里拽個東西出來顯示:上網搜「Mongo建立資料庫、Mongo插入數據」有真相,先往資料庫里插幾條數據再說:

db.test.insert({"text":"first"})
db.test.insert({"text":"second"})

然後搜一下「Python Mongo」找到pymongo庫,加到代碼里用:

from bottle import get, run
import pymongo
db = pymongo.Connection(host = "127.0.0.1", port = 27017).mydb

@get("/")
def homepage():
rst = ""
for i in db.test.find():
rst += "&

" + i["text"] + "&"
return rst

run(host="", port=25252)

好了,現在網頁顯示了我這個blog的頭兩篇文章:

誒,我們可以發現,現在我用db.test.insert({"text":"third"})這條語句,可以給我的blog插入新文章了(雖然還不是在網頁上操作),而我的網頁也可以顯示我的所有文章,這樣一個最簡陋的blog不是已經有了么?

我做以上操作只花了5分鐘,寫了10行Python代碼。就算是完完全全的小白,有那麼兩三天寫出這十行不過分吧?

接下來,和上面的操作類似,每次確定一個很小的目標,比如「我現在想把網頁上文本框里的內容用提交按鈕傳到伺服器上」,然後百度(連Google都不用搬出來!),在半個小時內解決目標,再繼續下一個目標……搞著搞著,就會發現Python好像越來越熟練了,前端也掌握了不少技巧……這不就慢慢學會了么?

基礎的、系統性的知識,可以在之後慢慢補充,憑藉上述過程,寫個最簡陋的blog完全不是問題!接下來的事情,只需要鍛煉兩種能力就行了:


①搜索的能力
百度當然不能解決所有問題,之後還要去Google,還要去StackOverflow,看官方文檔……

②發現問題的能力
比如說,上面代碼里抄來的 @get("/") 這句,@符號是幹什麼用的呢?為什麼這句話能夠讓下面那個函數返回網頁呢?發現了這些問題,上網搜索,一點點看,就越學越多了。

(寫於部署一個PHP網站被噁心得要死的晚上,人生苦短,去XXX的PHP!!)


看到上述答主的回答我真的,真的受不了了啊!!!!
人家題主真心真意想諮詢python的學習方法,你看你們都回答些什麼東西啊!
那個目前最高票的答主,你貼一堆無關的圖片,有毛用啊!
還有的答主,人家問django怎麼學,你回答其他框架blablabla,然後對比了一番flask、web.py啥的,這是幹啥呢!

我畫個簡圖,這個圖有點山寨,其實是招聘的提問參考(大牛們請勿吐槽,這真的是簡圖):

言歸正傳。
本答主使用django二年有餘,曾經用django做管理後台、做cms、做pv幾千的問答網站,和題主一樣,也是從0基礎開始學。我很能理解題主的困惑。

1.請問下一步我該幹什麼了?(我真的是不知道該往那個方向?階段?)

你處在初學的階段,就算你天天跟django打交道,前幾個月都是初學階段。
你已經覺得很迷茫了,說明真正入門了。我的建議是,你該準備一些web開發的基礎知識了
a、你應當了解一下某種資料庫軟體,mysql、Mongodb均可,推薦mysql
至少應該具備獨立安裝配置mysql資料庫、和基礎的SQL語法常識

b、你應當了解一下常見的HTML標籤和語法,應當了解常見的css樣式,基本的JS語法(至少能用JS寫個ajax收發吧)
推薦你看看http://getbootstrap.com/">bootstrap
花兩三天時間,掌握bootstrap以後,你就可以獨自實現前端

c、你應當了解,django不是伺服器,只提供服務。因此,學習nginx、或是apache是必要的。(IIS不了解,不過題主應該不在windows下部署網站吧。。。)

d、其他的,你自己慢慢會發現

2.在實際工作中,python工程師工作到底是做哪一塊的?(儘可能的詳細點)

我覺得你是想問django工程師吧?我們對django工程師要求較為全面(但是並不難),主要就是伺服器後端的這些業務邏輯了,順便,也要做一些full-stack的工作。具體點說,django工程師和產品溝通,確定網路服務的功能,然後獨自設計資料庫,設計網站結構、URL結構,獨自完成網站的所有伺服器邏輯;還要和前端交流,協助他們把想法變成代碼。
如果你真的是問python工程師,他們要乾的就多了,寫伺服器、寫爬蟲、寫運維工具、做數據分析、有時還要改開源的項目

3.如果從事django開發,還需要哪些技能?要學前端么?

前端要學,但是只需要能改簡單的css代碼、還有就是javascript越懂越好
其他技能:在(1)問中回答了

4.如果想去實習需要達到什麼水平?

題主你沒說哪家公司啊!!
鑒於國內使用django的公司真的很少,這個真的很難說。
不過之前的標準為例:

pythonic
必須熟練掌握至少一類python網路框架,如django、tornado或其他
必須熟悉非同步編程,掌握twisted框架加分
必須熟悉並習慣在Linux/Unix下進行日常開發,了解Linux下的伺服器級應用程序,如Nginx,MySQL/Postgresql, Redis, Sphinx等
必須掌握javascript、jQuery,具備基礎的前端代碼設計能力
必須掌握、善用UnitTest進行開發,
熟悉MySQL或Postgresql, 能夠編寫DDL,DML,
熟悉HTTP協議,了解RESTful

如果題主你學習的首要目的是就業,可以考慮PHP,需求大


1. 不要一邊學py一邊學dj。因為你對py基本語法和庫沒掌握情況下,又去學web的東西,只會讓你更頭大。
2. 學dj之前,先了解http協議,以及伺服器和瀏覽器是如何配合著工作的。這方面的書有《圖解http》、《http權威指南》可以看一下。
3. 學dj過程中最好把linux和sql給學會,不解釋。如果你不打算專門從事前端,也要看一遍html,js和jq。css可以不看,直接用bootstrap。這方面可以直接看 w3school 在線教程 。
4. 如果你覺得累了,看一看其他語言的框架。就會發現mvc在這些框架裡面其實都是一回事。
5. 實際開發中需要嚴格的mvc分離。然後根據需求劃分頁面,根據頁面劃分相應的m v 和c層。開發中始終按照這個就好。

django book 2.0: The Django Book
django中文文檔 1.8(還在翻譯,歡迎大家參與): http://python.usyiyi.cn/django/index.html


update
============
要不是有人評論,我已經忘記我回答過這個問題了,初學Python想嘗試Web開發的請轉Flask,可以圓你個網站夢。

下面是原始答案
======
@衛楓 的答案很幽默也是事實,其實Django就是一個大坑,不過也是有辦法填上的,我推薦樓主去Learn | Codecademy去學,按照順序學,HTML/CSS, 靜態網站,JavaScript,動態網站,Python,這些學完了再去接觸Django。
首先要明確Django不是給初學者練手用的,他是一個全棧的MVC(官方成為MVT)Web框架,除了上面我提到的技術,還要會SQL(Mysql),以及bash(Linux),Apache/Nginx(Web Server)。這些是做一個網站的基本。
當然無論什麼web框架都不是給新手練手的,其實python可以學的東西很多,比如爬蟲,很多人都是從這個入門的,因為想要爬網站必然要了解HTML,可以在這個階段練習python的使用,慢慢的學習HTML,如果抓的數據比較多可以開始考慮使用資料庫了,也可以作為一種練習。當慢慢的學會編程了之後,機會有很多人推薦你使用linux系統,你也會因為好奇心去接觸一下,這也為將來打下的一定基礎。慢慢的一步一步來,當你覺得自己已經能駕馭當前的任務的時候,想挑戰一把的時候就可以去學Django了,另外提示一點Django的基於類的視圖是比較坑的東西,頁面比較少的情況僅使用基於函數的視圖就好了,有助於你理解MVC框架的結構。

當然,我在學python的時候是用Django做了一個網站的,我還用了bootstrap的CSS庫,做的還蠻好看的(每一個程序員的內心都有一個做美工的小我)。不過這是我在學python半年之後,用了整整一個月才做出來的,正好的是畢業前的一個月,基本什麼都沒幹,畢業答辯的PPT有也只用了4個小時就做完了!雖然我之後的工作是數據挖掘工程師,基本很少接觸前端,不過還是有幸在我們公司網站的後台做了一個頁面,因為數據挖掘結果需要向運維的同事呈現,又是後台不用給客戶看,而且那個資料庫的介面是我提供的,再加上技術部剛離職了一個web工程師有點忙不過來,我們總監跟我說這個頁面你看著搞吧,不用好看,能顯示就行。結果我一個下午就弄出來了,還是小有成就感的。當然我一開始學python就是用於做數據分析的,要不有機會做大數據,我才不當程序員呢!


做個稍微的總結吧,已經有人吐槽我了
python工程師的工作比較廣,因為python能做很多事,數據挖掘可以用python,做小遊戲可以用python,寫網站也可以用python,黑客也用python。
前端要學。

使用linux,熟悉bash命令
會用html,dreamwaver可以不學。
會用sql,區分動態和靜態頁面一個重要的因素就是資料庫。
做好python2到python3的轉移,django1.5就已經開始支持python3了
英語要過得去,因為往往你需要的documentation還沒有翻譯。。。
js可以不用深入地學,因為django自帶提交表單,不用js也可以連接資料庫。
stackoverflow是個好網站,有利於人民的好網站,只是你英語要過得去。
csdn上有很多大牛的日記,值得收藏。

最後一句,請諸位知友指摘。


-------------------------------------------------------------------------
我當初就想做個網站。

我聽說Python能做網站,而且很吊,

我就去學了Python。

結果發現他們都是在Linux下寫的代碼,而我在Windows上裝了一次Python後再也不想在Windows上寫代碼了,於是我去裝了雙系統,我裝了Ubuntu,我發現好像不用bash沒辦法操作ubuntu,

於是我就去學了bash命令行,順帶學會了vi

然後發現我得學HTML,雖然有HTML和HTML5的區別,當時預感到HTML5是個大坑,我果斷跳了這個大坑。

我去學了html,

發現像HTML用手打代碼太噁心了,我

我又去學了dreamwaver,

沒錯是盜版,譴責我吧,我原以為dreamwaver是和ps一樣的操作,結果發現是這傻逼玩意,我還是手動擼代碼嗎。這時侯我就能做出一個簡易的網站了,乘勝追擊,繼續學習django,我發現我需要用到SQL

於是我就去學了SQL

千辛萬苦,sql也學了一些,我發現貌似沒有js的網頁似乎。。。但我預感到js是個大坑,我沒有學js,所以我讓我的一位程序員朋友去學,然後我回來繼續學習Django,我學的版本是Django1.2,我發現一個很重要的問題,卧槽,這怎麼引用css???對了關於css的問題,我已經在html里解決掉了,我意外的在互聯網的某個角落裡發現Django1.2不支持引用CSS。。。。

我默默去學了Django1.5,

對,去Django官網上,因為我發現,妹的!我已經走到沒有翻譯的荒原了!!!點開一本國人的Django book,滿心歡喜,結果就翻譯了第一章。。。我默默關上了網站

我去學習英語了

然後然後。。。。我用Django1.5重寫了網站,雖然量不大,但是很折磨人。CSS也引用也解決了,就差js了,我錯誤地預料到js並不是一個大坑,我的程序員朋友是個大坑。。。

不過幸好!!!Django自帶提交表單,所以不用js也行。

然後就到了現在,距離我開始學習Python已經十個月了,

但是我只是個小會計啊啊啊啊!!!!!!

你妹呀!!!感覺自己整個技能樹都被點歪了。。。

我想說啥呢,

1.知乎上推薦的那些Python的書都很好,但是不夠。
2.正確的學習姿勢是什麼樣的呢???一邊擼代碼,一邊使用bing,一邊上Stack Overflow,每次都能在那裡喜極而泣,原來我這樣的傻逼,世界上還有那麼多。
3.CSDN是個好網站,裡面有很多大神,讓我反覆了解我是個傻逼的現實。
4.你需要足夠傻逼繼續前進,因為你現在在一個大坑裡面,現在回頭還來得及。
5.現在一把辛酸淚,請問哪家公司需要一個會寫代碼的會計,我萌萌噠的喲!!!算了我還是去考研吧。

----------------------------------------------------------------------------------------------------------
看來我做的東西還是上不了檯面,迄今圖床問題也還在困擾我,就不貼出來了。


b、你應當了解一下常見的HTML標籤和語法,應當了解常見的css樣式,基本的JS語法(至少能用JS寫個ajax收發吧)
推薦你看看http://getbootstrap.com/">bootstrap
花兩三天時間,掌握bootstrap以後,你就可以獨自實現前端

c、你應當了解,django不是伺服器,只提供服務。因此,學習nginx、或是apache是必要的。(IIS不了解,不過題主應該不在windows下部署網站吧。。。)

2.在實際工作中,python工程師工作到底是做哪一塊的?(儘可能的詳細點)

我覺得你是想問django工程師吧?我們對django工程師要求較為全面(但是並不難),主要就是伺服器後端的這些業務邏輯了,順便,也要做一些full-stack的工作。具體點說,django工程師和產品溝通,確定網路服務的功能,然後獨自設計資料庫,設計網站結構、URL結構,獨自完成網站的所有伺服器邏輯;還要和前端交流,協助他們把想法變成代碼。
如果你真的是問python工程師,他們要乾的就多了,寫伺服器、寫爬蟲、寫運維工具、做數據分析、有時還要改開源的項目

3.如果從事django開發,還需要哪些技能?要學前端么?

前端要學,但是只需要能改簡單的css代碼、還有就是javascript越懂越好
其他技能:在(1)問中回答了

4.如果想去實習需要達到什麼水平?

題主你沒說哪家公司啊!!
鑒於國內使用django的公司真的很少,連我們現在都不招人了,這個真的很難說。
不過以我之前的標準為例:

pythonic
必須熟練掌握至少一類python網路框架,如django、tornado或其他
必須熟悉非同步編程,掌握twisted框架加分
必須熟悉並習慣在Linux/Unix下進行日常開發,了解Linux下的伺服器級應用程序,如Nginx,MySQL/Postgresql, Redis, Sphinx等
必須掌握javascript、jQuery,具備基礎的前端代碼設計能力
必須掌握、善用UnitTest進行開發,
熟悉MySQL或Postgresql, 能夠編寫DDL,DML,
熟悉HTTP協議,了解RESTful

------------------------------
1. 計算機的底層原理從來沒有變過。
網路需要通訊原理,編程需要數據結構與演算法。一個列表的排序不管你是JAVA是C是PYTHON,哪怕你調用的函數名字千差萬別,最後的演算法其實疏通同歸。你大可不去查文檔自己寫一個出來。一個一個網頁上得表單,不管哪個框架哪個語言哪個MVC,最後都要歸於一個HTTP的POST,最後都要連接上資料庫,寫進去存起來。

這就是原理不變。你要先把這個道理時時刻刻的記在心裡。當遇到看不懂的東西,迷茫的時候,去想想這個函數到底做了什麼,然後從那個不變得原理反推回來,大部分時候你會發現很多新技術不過是早已有的技術的重組與包裝而已。
2. 任何一門新技術都是人為寫成的。
你的第一個問題是我該幹什麼?很簡單,做第一個網站,做第二個網站,做第三個網站。做網站做吐了就去做做手機APP,做的無聊的就去玩玩爬蟲。記得把你所有寫得東西都扔到GITHUB上去,每天在SO上答問題問問題。就這樣。
3.如果從事django開發,還需要哪些技能?要學前端么?

你學的不是Django開發,你學的應該是計算機科學中,網路應用方向的一部分。這才應該是學什麼Php網站開發,Python開發真正應該叫的名字。 Django只是你工具箱里的一個工具而已,比方說它是把鋸子。這個鋸子的牌子叫做Django. 其他生產鋸子的廠家包括但不限於Php, Flask, Java, Go....但是他們的本質都是鋸子。都可以做一樣的事情。有的廠家在鋸子上安了個小手電筒,於是它的牌子的鋸子也許多了一些功能。這就是框架與框架的區別。

所以,你需要的不是Django開發的技能,你需要的是網路開發與管理的技能。如果題主專註於做網站的話,相信我,資料庫資料庫資料庫!一個設計良好,結構合理的資料庫,是任何優秀網站的前提。

4.如果想去實習需要達到什麼水平?
別想,別問,做吧。當你能按照上面說得,持續不斷的更新你得個人項目,持續不斷的在SO也好,V2EX也好上累積你的資歷,持續不斷的,抓住計算機科學的本質去學習。

我有建立一個python學習交流群,在群里大家相互幫助,相互關心。相互分享知識,多一個人多一個想法,只有人多的時候遇到問題才會有更多的人幫你解決問題,如果你也是願意分享,不是單純的伸手黨我歡迎你來群里,先在搜索框裡面加483在加上546 最後是416 這樣你就可以找到組織大家一起來分享

快速學習python交流總群:619307290 &>48354641


Django是python的web開發框架,遵循MVC的設計模式,但在Django中通常稱為MTV(model-template-views)。model是數據持久層,主要存放實體映射、實體關係以及實體的一些方法。template是表示層,主要是用來顯示數據,Django的視圖引擎可以將其渲染成HTML並顯示。views是業務邏輯層,在Django中充當著鏈接model與template的橋樑,處理模型並向template提交數據,同時也接受template的請求和參數,完成相應的邏輯後提交模型修改。

個人認為這裡的MTV和.NET MVC表達的是同一個意思,最大的差別就是在.net里views是表示層,而Django里是業務邏輯層,根據官方文檔的意思只是對views的理解不一樣而已,其實完全可以當成controller來用。下面我將根據個人的一些理解來介紹一下Django的語法和特色。

1. views和URL

views是業務邏輯層,在Django裡面views通常是一個的views.py模塊,放在對應的包里。views.py裡面是具體的邏輯函數,每一個函數對應著一個或多個模版,為了建立模版與視圖的聯繫,還要有一定的路由機制,於是Django通常在根目錄有一個路由程序urls.py。路由由patterns來創建,用正則表達式來描述,極大地提高了路由機制的靈活性。

比如:

views.py

def home(request):
values = request.META.items()
values.sort()
return render_to_response("home.html",{"values":values})
urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns("",("^$",home),)

在這裡request參數是必須的,但是你可以任意命名,只要符合規範即可,request包含頁面的請求信息。sender_to_response在django.shortcuts里,所以你還要在前面聲明form django.shortcuts import sender_to_response。request.MATE里含有所有的請求界面信息和用戶信息。shor()是對list從小到大排序。返回值的意思就是向home.html模版提交一個values變數。urls中patterns中的元組添加了正則的導向規則:除去原地址匹配"^$"者導向home。當然這前提是views.py文件與urls.py在同一個文件夾裡面否則就要引用home的命名空間。如果想在url中傳遞多個值,可以在你想傳遞的匹配值上面加上括弧比如("^([^/]+)/([^/]+) /$", home)就可以匹配/some/some/而some就會被傳到處理函數home。相應的home要添加適當的參數來接受。

2. 模版(Template)

模版在Django中是顯示數據的地方,通常為HTML格式,在模版中Django的處理邏輯要寫在{% %}中,而要顯示的變數要寫在{{ }}中。Django的母板頁可以用任何文檔充當,前提是要用{% block name %}{% endblock %}聲明要填充或替換的塊,而使用時只需{% extends 母版名字 %}然後調用相應的塊就可以了。

3. 模型

在setting.py 中的database的字典中配置資料庫。配置完成後 使用manage.py startapp來創建app在models中編寫python代碼描述實體映射。比如:

models.py

class Publisher(models.Model):
name = models.CharField(max_length = 30)
website = models.URLField()

def __unicode__(self):
return self.name

class Meta:
ordering = ["name"]

models包含在django.db中,裡面封裝了模型類的通用介面。CharField()是創建varchar型數據,參數有max_length,blank,verbose_name等。分別表示最大長度、是否為空、顯示名稱。def__unicode__提供了裝箱後的默認顯示,如果沒有設置此函數,默認顯示object類型。class Meta規定了模型的默認排序欄位。同時Django也提供了外鍵設置介面,此處以book為例

class Book(models.Model):
title = models.CharField(max_length = 100)
authors = models.ManyToManyField(Author) #多對多關係
publisher = models.ForeignKey(Publisher) #多對一關係
publication_date = models.DateField(blank = True, null = True)

創建完成後要在setting.py配置文件INSTALL_APPS中加入app包的路徑。

Django支持codefirst 可以用manage.py syncdb來同步資料庫,更新資料庫時Django是先生成sql語句然後再執行,在執行前可以運行manage.py validate來檢查模型,也可以運行manage.py sqlall books。可以直接聲明模型對象來實現數據的插入save()保存 objects.filter()查找,可以對象調用delete()刪除,同時也可以模型調用delete批量刪除。同理update也是對象調用單個修改,模型調用批量修改。

4. 集成的子框架

在django.contrib包中有多種附加功能包,目前只了解了admin和auth兩種感覺功能很強大,美中不足的是admin的界面略丑。 admin是Django官方提供的後台管理平台。可以管理你所添加的app集成了包括增刪改查在內的所有常用功能。調用代碼也很簡單,只需要在urls.py內激活admin的鏈接即可,配置文件在setting.py里,有需求的話可以自行改動。如果想把app的管理加入裡面需要添加如下代碼(以Book為例):

class BookAdmin(admin.ModelAdmin):
list_display = ("title", "publisher", "publication_date") #顯示順序
list_filter = ("publication_date",) #過濾列表
ate_hierarchy = "publication_date" #激活列表上方的日期查詢
ordering = ("-publication_date",) #排序方式"-"代表倒序
filter_horizontal = ("authors",) #添加時候的橫向選擇過濾(此處假設book和authors 是多對多關係)
raw_id_fields = ("publisher",) #添加時候的選擇(此處假設publisher和book是一對多關係)

admin.site.register(Publisher)
admin.site.register(Author,AuthorAdmin)
admin.site.register(Book,BookAdmin)

5. 緩存機制

個人認為緩存對一個訪問量過多的網站時非常重要的,Django裡面提供的緩存方式大致分為三種:全站緩存配置方式,針對視圖緩存配置方式,針對數據緩存配置方式。只要修改相關配置文件即可。也可以裝其他插件來協助緩存,例如memcached。


和樓主一樣迷茫到現在。
一樣的是想學django,學learn django
然後發現,做出來的頁面太丑,又去學HTML
發現HTML要靈活,還是得學JS,
於是又去學JS
目前還在學JS中
然後發現,python扒出來的東西要分類存儲分析
於是去學了Mysql
後來發現mysql的交互很差,聽說oracle很好很強大,mysql也要往這個方向走
於是去裝了oracle的客戶端
然後學了點sql
當我要把python扒出來的數據放到oracle裡面的時候
問題出現了
我用的是64bit的python
電腦也是64bit的
oracle 也是 64bit的
但是 cx_oracles只有 32bit的
於是我裝了卸,卸了裝
終於
我決定用mysql算了

------------------------------------------------
時隔多日,在補充下最近進度。
關於python 掉oracle問題,主要是和平時在公司的項目是做oracle的,所以想把python作為一個小工具用,能加快開發效率,測試一些方法等。
我的開發環境是 win7 64bit, python 64bit. 這樣的話,安裝一個64位的客戶端實際是可以用的。但是PLSQL不認64位的oci.dll,有具體的方法,可以下載一個 instance,直接解壓後,把配置文件放到文件夾中,然後plsql引用即可。
最近摸索的是python 的scrapy。
可能是我的學習習慣不太好,比較心急,一些基礎的東西沒有耐心的去看,所以,對照這教程去重現,但是沒有深刻的去理解,實際上,因為基礎不是很紮實,所以理解起來也比較困難。
可能很多人學習新語言都有這樣的一個過程。
但是,堅持過一段時間後,會豁然開朗的。所以,題主要做還是堅持去嘗試用python做一點自己喜歡的事情。比如從一些網站上爬一堆照片,然後放到自己的django搭建的網站上。
總之,堅持和反省。
與你共勉。


零基礎開始學python+1,高三暑假在老鄉群一個學長(已經邀請他回答了)建議我從python開始學,於是去網易公開課找了個python的視頻開始學,那時候其實才學了一丁點,然後到大學,報了一個社團的技術部門,正好用的就是python,於是終於走上了正道,有人指導了。後來我學python用的是codecademy,搭配《簡明python教程》(太簡明了理解不能,後來就放棄了)codecademy刷到70,然後做一個信息錄入的小程序,差不多就正式通過審核了(當時雖然我也做出來了,和別人的一比還是感覺差了一大截π_π),面向對象的部分。。。學了一點,django對這個要求不是很高,基本語法會了應該就行了。如果python學的好再學django用起來感覺會更靈活吧,但是也不是要求特別高,在學django的過程我覺得也是對python的學習╮(╯▽╰)╭之後開始學django的時候看的是djangobook,中文版,有很多bug,幾乎要折騰死,理解起來也不容易(對我來說)。當時配置環境,win上死活跑不起來,只能在ubuntu上跑,裝的雙系統,虛擬機太卡了受不了。後來我把做好的東西移回win改改設置發現又跑起來了,然後我就好久沒開ubuntu了。。。事實證明在win下面開發也是可以的⊙﹏⊙只是各種問題肯定會有,看自己選擇吧。從做留言板開始,然後做博客,不會的問題就各種搜,善用搜索引擎啊╮(╯▽╰)╭其實在那之後很長時間還停留在只會做博客的階段,怎麼說,還是邊做邊學效果比較明顯,有明確需求的話會知道自己哪方面的知識需要加強。至於前端。。。是我心中永遠的痛π_π,審美太渣已經完全放棄前端了,因為無論怎麼做出來都特別丑π_π如果審美還可以的話初期學學html基本的標籤,要用的時候再現找也可以,css可以一起學,熟練了之後再用框架(已經被bootstrap弄暈)。

很多程序員,在學習一門新技術的時候,都會陷入像題主你這樣迷茫的狀態。我也一樣。而且不止陷入一次兩次。比如學習新的框架的時候,學習新的語言的時候,學習移動開發的時候。這事兒多了以後,我就在想。不對,肯定有哪裡不對,看著StackOverflow也好,Github也好,上面那麼多的高手,回答各種問題。而很多人居然還是在校的學生。我有種感覺,這肯定是我的方法出了問題,肯定是在某個很深很深的根源上出了問題。大家都是人,一天三餐吃喝拉撒,學生雖然自由時間多一些,但是我們畢竟也幹了這麼多年的程序員。新東西每天都在往出冒,不可能有人能那麼快得全部掌握。而現實是確實出一種新技術,瞬間一堆高手就冒了出來。這事兒,有問題。於是我就開始找問題的根源。其實這事兒沒這麼複雜,只要靜下心來,不要看到一個新技術就急慌慌的去學,很快就能反映過來。根源其實就是兩點:1. 計算機技術的底層原理從來沒有變過。2. 任何一門新技術都是人為寫成的。這是我在迷茫了N次後,靜下心來,製造出的自己在技術海洋上的指南針。對不對好不好不敢說,大家批判這看吧。在學習任何一門新技術新框架新語言時,我會先把這兩條引用到整個學習過程中去。1. 計算機的底層原理從來沒有變過。網路需要通訊原理,編程需要數據結構與演算法。一個列表的排序不管你是JAVA是C是PYTHON,哪怕你調用的函數名字千差萬別,最後的演算法其實疏通同歸。你大可不去查文檔自己寫一個出來。一個一個網頁上得表單,不管哪個框架哪個語言哪個MVC,最後都要歸於一個HTTP的POST,最後都要連接上資料庫,寫進去存起來。這就是原理不變。你要先把這個道理時時刻刻的記在心裡。當遇到看不懂的東西,迷茫的時候,去想想這個函數到底做了什麼,然後從那個不變得原理反推回來,大部分時候你會發現很多新技術不過是早已有的技術的重組與包裝而已。2. 任何一門新技術都是人為寫成的。這裡的新技術主要指的是目前百花齊放的各種框架啊庫啊類啊語言啊一類的。一開始我也很很多人一樣,覺得哇好牛好酷好高大上。但是慢慢的,我有一種被欺騙的感覺,這種感覺類似於某類產品持續的營銷,今天我們有這個口味,明天我們有哪個口味。區別只是一個加了蜂蜜一個沒加。因此在總結了第一個『原理不變『之後,很自然的我推出了第二個』人為寫成『。意思是不管看起來多麼新潮,多麼高大上的語言,它首先要遵循第一條原理不變的道理。而如果在使用它的過程中,發現了某些有違第一條的感覺函數,方法,邏輯。那麼百分之百這個函數方法邏輯只是做了人為的包裝而已。去看文檔,不要糾結為什麼,作者當時可能腦袋進水,不要跟著他一起跳坑。簡單說,什麼Django, Flask, Web.py最後:

自己多問下為什麼學python

如果一門語言沒有改變你的編程思維,那麼它不值得你去學習」。如果這麼說,我們大學的時候,學習了c,c++,java,C#,算是值得學習么?很多時候是不值得,我覺得我們大學的課程就是用java,c#,c++把"C程序設計"又上了一遍.

這是因為,學校的老師會C和java之類的,所以要跟著規矩開這門課,(這也就是為什麼,許多學校還在教vb,),這也就是為什麼,你所以為的一樣就是大家都有For都有while,都有switch..都有Class...都有int 都有float,所謂的不一樣就是用C有指針,java沒有,這就是為什麼教育是失敗的,這也就是為什麼,我目前認識的幾個編程大牛

python的優點:簡單 我所說的簡單,是相比於象C和C++這樣的語言,你為了編程,要學習許多偏底層的東西.在比如,你在學習一個新的編程範式,或者想要馬上做個例子看看,試驗某個API,如果你是寫java的,你不得不去寫一個main,寫一些構造,即使有IDE這樣的東西,能夠為你帶來代碼生成器,而我做得就是寫一段「腳本」,或者打開python互動式解釋器就行了。

自己認識的python朋友出去工作,工資比較高,然後自己又剛剛好是會python所以選擇學習python,這樣的人比較危險但是也比較有激勵,還有就是覺得python比其他開發語言好用。


學完python前景會咋樣

其實我個人是很看好python未來的就業前景的,因為我認識太多的工程師都已經在學python,很多都是月收入大幾萬的

我個人也並非一直用python。前些年主要用c/c++以及java開發一些通信,移動系統,互聯網通信。近3年開始才轉向python。坦白的說,這可能與你相處的公司以及環境不大一樣。隨便舉個例子,google的protocol buffer協議一出來就具有c++/python/java三種語言支持。google的廣告系統早在03,04年左右就一併對python進行了webservice支持,大部分涉及基礎核心系統的公司,都開始對python進行了擴展支持。甚至開源社區的postgresql資料庫,除了自身的ansi SQL,pgsql,pg/TCL,PG/PERL之外對python進行了內嵌支持,唯獨卻沒有呼聲很高的java。在FREEBSD(MIT)/LINUX(GPL)平台上,對java可能排斥性比較大,但綜合而言,目前python發展還沒有java那種普及,主要是python大部分工作仍然是在較為深入地系統層和框架層做設計開發,例如django,SQLAlchemy,fail2ban,mail郵件系統,twisted等等。這部分對於那種習慣應用前輩們框架的編碼人員而言,缺乏創造力的他們根本無法適用這種開發。尤其在python涉及一些系統層面需要有較強的c/c++能力,這部分人在國內要麼就累得要死沒時間,要麼就啥都不會就會拷貝代碼,而國內公司也鮮有主動去做這部分基礎勞動的,大多都是等別人做好了在直接拿來用,所以造就了任何技術性的東西出來,國內都是先等等看,然後抄襲應用。

大環境如此,但千萬誤認為先等等看吧。對於一個技術人員而言,缺乏對新技術的渴望與熱情,這是一種非常危險的事情。我工作8年了,按照國內很多的人的說法早已不做代碼了,但又一次在聽一個老外的演講,他說他50多歲仍然每天堅持寫代碼,了解最新的動態,所以他才能做到他們公司的首席科學家,因此它才能時刻指導項目團隊前進並保證項目的質量。他坦言對於一個不寫代碼並且不了解最新的技術動態的技術人員或者技術團隊的負責人而言,這種團隊也就足夠做作小項目,一旦壓力和項目過大,就會有很多問題漏出來。

對於新人而言,無論學習什麼技術,都要以鼓勵的姿態出現。太多用薪水和你個人所看到的現狀去衡量一門技術,那絕對是欠缺眼光的。任何一門技術,一旦有人學習,他有可能逐漸成為這個領域的專家,即便再濫再沒有人用的開發語言技術,他也有可能就是明日的奠基者或者大師。


自己如何確定目標

在生活中學會不斷挖掘自己的潛力。我們都是一個普通人,可能並不清楚自己到底在哪方面佔有優勢。所以,學著在生活中找到自己的優勢,並根據優勢選擇一定的就業方向。

不隨波逐流。不要看周圍的人做什麼,自己就做什麼,也許別人做的並不適合你。別人的優勢很可能會成為你的劣勢。所以,堅定自己的想法,讓自己知道那些方面適合自己,自己可以勝任。

不斷嘗試可能成為自己的優勢。你不知道什麼適合自己,所以才要大膽、勇敢地嘗試。找到一種可以屬於你的獨特的優勢。

堅定信念。一旦你堅定了自己的信念,就不要被別人的意見或是諷刺或是嘲笑所干擾。別人不是你,不懂的你在想什麼,不清楚你開始這件事的源頭。你的事情,不了解你的人,沒有資格輕易評說。

不茫然,不多想。別讓太多的事干擾到你奮鬥下去的信念。夢想不容許太多的雜念。那些雜念只會讓你的心愈來愈脆弱,多為一個人考慮,到頭來,傷害的還是自己。


選擇自己學習方法

每個人都有適合自己的方法,有的人去選擇自學,有的人選擇看視頻學習,有的人選擇報名培訓班,那在這個時候,你就要自己考慮清楚,到底那樣對的幫助是最大的,個人覺得是跟著培訓班最好的,畢竟人家的實戰項目多,我們學軟體開發的都知道實戰項目對於學好一門語言是 很重要的。


學習python有那些誤區


具體裡面的誤區非常的多,那些就不需要我去寫出來,我給你說的一般都是心態的問題,首先一個覺得自己會java和c++,然後我學習python就很牛,但是你要知道語言是有很多相同的地方,但是不是通用,一定要自己學習的仔細。還有一種就是覺得我不會英語,我要先去把英語學習好在來學python。因為自己想還壞主意然後學習,這樣的都是容易找進誤區的。


怎麼樣才能學好python

學好python你需要一個良好的環境,一個優質的開發交流群,群里都是那種相互幫助的人才是可以的,我有建立一個python學習交流群,在群里我們相互幫助,相互關心,相互分享內容,這樣出問題幫助你的人就比較多,群號是304加上050最後799,這樣就可以找到大神聚合的群,如果你只願意別人幫助你,不願意分享或者幫助別人,那就請不要加了,你把你會的告訴別人這是一種分享。


感覺寫的好,對你有幫助,就點個讚唄,別光只收藏哈.~( ̄▽ ̄)~


?


我最近組織了一個 django 新人學習小組,並開始一邊學習一邊做項目實踐。正好目前進行到第一周,小組正在做一個 Blog 程序,雖然簡單,但是足以帶你進入 django 開發的大門,歡迎 follow 我們,並期待您的建議和意見。

簡單介紹一下小組的運作模式:我們在每個周末會開一個小組討論會,討論下一周的開發內容,每個人根據其分配的任務去學習相應的文檔。但是不僅僅是做完自己的工作就完事了,每個人在學習的過程中還要把自己學的東西講給全小組的人聽(主要是寫成一份和自己工作相關的文檔),讓其他的組員都明白你做了什麼,這樣你不僅學到了自己該學的,也學到了其他組員學到的東西。

目前我們正在進行第一周的項目,第一周的學習文檔已經出來了,發布在簡書上:Django學習小組出品:一起來做一個簡單的Blog第一周文檔(教程)。我把摘要部分貼出來,感興趣的朋友可以去簡書上閱讀原文。

此外歡迎關注我們的 github 組織首頁,所有項目的相關源代碼都會上傳到 github 上。每周更新,但是代碼量不大,確保在新人的接受範圍內,這樣可以讓新手完全跟上我們的學習和開發進度。

第一周文檔的摘要:這一周我們小組完成了 Blog 首頁的搭建。

本節是 django blog 項目的開篇,是 django 學習小組的集體學習成果。django學習小組是由我發起的一個促進 django 新手互相學習、互相幫助的組織。小組在一邊學習 django 的同時將一起完成三個項目:

  • 一個簡單django blog,用於發布小組每周的學習和開發文檔
  • django中國社區,為國內的 django 開發者們提供一個長期維護的 django 社區,聚集全國的 django 開發者到這個社區上來
  • django 問答社區, 類似於segmentfault 和 stackoverflow但更加專註(只專註於 django 開發的問題)的問答社區

目前小組正在完成第一個項目,本文即是該項目第一周的相關文檔。

更多的信息請關注我們的 github 組織首頁,本教程項目的相關源代碼也已上傳到 github 上。
同時,你也可以加入我們的郵件列表 django_study@groups.163.com ,隨時關注我們的動態,我們會將每周的詳細開發文檔和代碼通過郵件列表發出。
如有任何建議,歡迎提 Issue,歡迎fork,pull request,當然也別忘了 Starred 哦!
每周更新,敬請關注

——by Django 學習小組,期待您的建議和意見


因為你是剛剛開始接觸,所以你需要學習的不是django而是最基礎的python。django作為一個web框架,它其實是將大量的python代碼進行了封裝。在你對python對webserver還不是很了解的情況下直接接觸django相當於是隱藏了很多你並不知道的知識。

另外應該怎麼從零基礎去學呢?首先,你並不是要學習django,也不是要學習python,你是要學慣用python的django框架搭建一個網站。不知道你最初是否只是想要搭建一個網站,我就先當你的目的是期望能夠熟悉如何搭建一個網站。所以你要搞清楚的是怎麼搭建一個網站,只是你選擇了通過python django 而已。所以你應該先選擇用簡單的工具去搭建一個簡單的網站,最後再去嘗試用複雜一點的框架去搭建一個複雜一點的網站。所以建議通過以下步驟:


1:使用內置的庫,活著一些非常基礎的http庫去搭建一個http服務,使得它能夠返回helloworld,通過這個步驟搞清楚http服務的本質,搞清楚 url,request response 什麼的。
2:利用一個稍微經過封裝的web框架(模塊),比如python的pyweb,搭建一個真正的html頁面,稍微有點css和js的內容,比如可以搞一個紅色的按鈕,然後點擊一點彈出helloworld,利用這個步驟了解下url路由,靜態web文件夾什麼的,順便搞清楚css和js是什麼,不要去用什麼dreamwave。
3:web框架可以繼續升級,了解MVC設計模式,用以下後端的模板,搞清楚模板和html的關係。開始做你想要做的網站。也可以繼續專研一下各種庫啊框架的代碼。順便了解下資料庫。
4:基礎的掌握之後就要開始朝專業邁進,學習下專業的網站是怎麼做性能優化,模塊架構設計,代碼管理,上線監控等。最好是能夠通過去公司實習學習是最快的,不行就去github上搞一些開源的項目自己部署研究玩玩。

其實我說得這些和python無關,其實我對python也不熟,也沒能完全回答你的問題,只是知道些皮毛,給個大概的建議吧。同樣你要是不用python用NodeJs,Go,Java,Php都行。不過python算是個入門不錯的選擇。要是對js感興趣可以用下NodeJs,要是對新的東西感興趣可以用Go,Java和Php都行,你要會C++其實也行。

循序漸進,保持熱情。


你的問題不是Django 的問題。
黃哥曾經說過一句話:循環都不會,就想玩django!

首先要解決自己能動手寫代碼的問題,也就是說通過學習python學會編程,再學習django。
如果你感覺自己能動手寫代碼解決問題,可以開始學習django

先簡單學一點html,css知識。
黃哥覺得學習任何一門框架,python,php的都可以從做一個「增刪改查」的blog入手,
學起來比較快!
這書《django web開發指南》早過期了,建議不要看。
請看官方文檔和下面的書。

Django documentation

django新書
web development with django cookbook 2nd
django-unleashed
Lightweight Django
tango-with-django
Django Design Patterns and Best Practices


零基礎開始學python+1,高三暑假在老鄉群一個學長(已經邀請他回答了)建議我從python開始學,於是去網易公開課找了個python的視頻開始學,那時候其實才學了一丁點,然後到大學,報了一個社團的技術部門,正好用的就是python,於是終於走上了正道,有人指導了。
後來我學python用的是codecademy,搭配《簡明python教程》(太簡明了理解不能,後來就放棄了)codecademy刷到70,然後做一個信息錄入的小程序,差不多就正式通過審核了(當時雖然我也做出來了,和別人的一比還是感覺差了一大截π_π),面向對象的部分。。。學了一點,django對這個要求不是很高,基本語法會了應該就行了。
如果python學的好再學django用起來感覺會更靈活吧,但是也不是要求特別高,在學django的過程我覺得也是對python的學習╮(╯▽╰)╭
之後開始學django的時候看的是djangobook,中文版,有很多bug,幾乎要折騰死,理解起來也不容易(對我來說)。
當時配置環境,win上死活跑不起來,只能在ubuntu上跑,裝的雙系統,虛擬機太卡了受不了。
後來我把做好的東西移回win改改設置發現又跑起來了,然後我就好久沒開ubuntu了。。。事實證明在win下面開發也是可以的⊙﹏⊙只是各種問題肯定會有,看自己選擇吧。
從做留言板開始,然後做博客,不會的問題就各種搜,善用搜索引擎啊╮(╯▽╰)╭
其實在那之後很長時間還停留在只會做博客的階段,怎麼說,還是邊做邊學效果比較明顯,有明確需求的話會知道自己哪方面的知識需要加強。
至於前端。。。是我心中永遠的痛π_π,審美太渣已經完全放棄前端了,因為無論怎麼做出來都特別丑π_π
如果審美還可以的話初期學學html基本的標籤,要用的時候再現找也可以,css可以一起學,熟練了之後再用框架(已經被bootstrap弄暈)。


1.基礎差。那麼HTML,CSS,JS,SQL這些基礎知識都得學,這是免不了的,慢慢來。
2.基礎差。建議學ruby on rails,簡單強大。很多用rails的同學根本不懂編程好吧。
3.別想一口吃撐了。理解前端到後端需要耐心、不斷的閱讀、學習和實踐,你有的是時間。


做web開發確實需要懂很多東西,如果只是學python,可以試著寫爬蟲;

做web開發,django確實比較複雜,因為它是全棧式框架,試試從flask,bottle,webpy這種輕量級框架入手,一次理解一種組件的功能。

前端,HTML+CSS買本書,埋頭看,要是有耐心,看一點學一點也行,沒耐心,那就只顧看下去,知道個大概就行,用的時候再查。

JS,這個買本書邊看邊練習吧,知道大概語法以及DOM編程差不多了。然後就是學學流行的js庫,差不多就是jquery了,更複雜的什麼Eext, angularjs之類的先不要沾。

不知道你有多少時間學習,這些事,一個月做好一件,也不過半年的時間。

博客,不要自己寫啦,先去github上找個python寫的,自己分析源碼,看懂了自己再寫一個也行。

希望有幫助


首先問樓主一個問題,樓主的目的是什麼?
想學習Django?繼續問,目的呢?
做網站?繼續問,靜態網站還是動態網站?
靜態的?恭喜你,你不需要學習Django,去學習HTML+CSS+JavaScript吧
動態的?後面細說
不知道這倆的區別?先打一下網站的基礎吧~

好,現在假設樓主想用Django搭建一個動態網站。
既然樓主沒有前後端的經驗,我的建議是為了不迷茫,盡量讓自己的目標具體,比方說很多新手作為起步工程的todolist就挺合適。
接下來要做的就是前後台工作的分離,盡量不要兩邊一起做,比方說既然樓主專門學習了Python,那就趁熱打鐵,把後台先寫了,前台只寫HTML,只寫Django模板需要的部分,樣式設計和動態響應統統先放一邊,先搞定數據。這裡需要的準備知識大概有:Django建模,和PostgreSQL的連接,Django Migration,Django模板的用法, 簡單的Django View的寫法, Django URL的用法。
這部分調試用內置的Django Admin輸入數據,目標是能夠把資料庫里的數據在前台正確顯示。

輸入的部分要稍微注重用戶體驗的話必然會涉及到AJAX,所以這部分也會花不少時間。同樣是不管樣式設計,做到可以成功利用AJAX post數據到伺服器,那數據部分就基本搞定了。

最後的樣式設計和一些動態響應就是CSS和JS的事了,這部分可深可淺,樓主可以根據自己的時間決定學習計划了。


唉,本碩6年計算機的路過,我們科班出身,從基礎打到現在,花了多少時間。題主零基礎一上來就是各種高級語言高級框架的,能不迷茫么?


未來是aws lamda和ms的fabric
no ops 嘿嘿


我也是純自學,遇到類似的困惑。
這樣解決:
必須做出個項目,做完你就懂了。
建議去搜索 「django 博客」(關鍵詞可以變),你會發現網上有不少人寫了完整教程,提供了源代碼,你把代碼下載下來,研究下(找簡單的項目)。之後你就模仿人家的寫自己的,遇到相應章節你就看django的官方文檔。
你說的前端問題,你可以使用bootstrap,你只要知道簡單的html知識去微調就可以。
資料庫你也可以先用python/django自帶的,上線了之後再微調。
等你的博客做好了,把它弄上線(可以用digitalocean雲主機,很便宜),你再各種微調,加各種複雜的東西。
之後你就會覺得,哦,原來是這麼回事。
這是我之前寫的,供你參考。caosz11/djangoblog-ilemon · GitHub
記得去做!


推薦閱讀:

有哪些年輕人該看的優秀書籍?
你見過的最強考試題是什麼樣的?
有什麼可以保持每天好心情的方法?
很好很好2費?
有哪些令人清醒的句子?

TAG:Web 開發 | 學習 | Python | 編程 | Django(框架) |