看板 Python 關於我們 聯絡資訊
就如同題目 我想問的是很基礎的問題 事情是這樣的 我是網頁開發的初學者 這學期我上了一門課有教Javascript跟Python 最近公布了期末專題的題目 就是用Python寫server side 用Javascript寫client side 製作一個Web Application 我看去年作品有像關鍵字查節目表、線上乒乓球等等 沒有其他任何提示跟要求 可是我們老師課堂上也只有講講語法而已 所以作為一個初學者 我對Python的理解只停留在 "在command line輸入Python語法 產生對應結果" 完全沒辦法想像專題該如何完成以及Python網頁開發的流程和架構 所以希望開發經驗豐富的各位 可以為我介紹整個網頁開發的流程和架構 舉些我有在網路上看到的東西 jQuery, AJAX, JSON, CherryPy, Django, Google App Engine(好像有人說code 要deploy到這裡之類的) 可以告訴我這些東西在網頁開發中扮演那些腳色嗎? 詳細怎麼使用我相信我可以自己學好 畢竟我也是有累積了各種語言的coding經驗 不過現在就是缺了一個"大局觀" 到底每一層的東西要怎麼分工、怎麼連結在一起、怎麼做出一個互動性網頁 希望好心人可以給我一個完整的概念 指引我一條路QQ 非常感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 152.78.252.37 ※ 文章網址: http://www.ptt.cc/bbs/Python/M.1415494217.A.093.html
carylorrk: 不知道你的程度很難說明耶...你知道什麼叫 HTML/CSS 嗎 11/09 10:23
carylorrk: HTTP request/response 呢? 11/09 10:23
carylorrk: 如果都不知道的話,建議你去看 web_design 置地文 11/09 10:24
carylorrk: 或是跑一遍 w3schools tutorial(雖然很爛) 11/09 10:25
jimmytzeng: 可以跟著Django的tutorial做一次 11/09 16:59
fishlinghu: 我知道HTML 我也有寫過PHP網頁 我有資料庫的概念 11/09 18:03
fishlinghu: CSS我也用過 那篇置底文我大致都懂 也用過大部分 11/09 18:05
fishlinghu: 現在是不知道Python跟做網頁有何干 11/09 18:06
fishlinghu: 還有那些工具(framework?)在整個架構負責哪部分 11/09 18:07
mars90226: 有寫過PHP就很好懂了,Python負責server端 11/09 18:38
mars90226: 就像你在寫PHP一樣,會有server執行你寫的PHP 11/09 18:38
mars90226: server遇到request就產生對應的html回去給client 11/09 18:39
mars90226: 所以Python要負責的就是根據request做對應的處理後 11/09 18:40
mars90226: 產生對應的html回傳,例如要對資料庫處理,或進行運算 11/09 18:40
mars90226: 的部分都是由Python完成的 11/09 18:41
MacPerson: 跟著django走吧,你會覺得其實跟你寫過的PHP差不多 11/10 00:00
MacPerson: 重點是你寫過的PHP是MVC架構的 11/10 00:00
qoorocker: 如果只是小型應用 選cherrypy吧 django 太肥 XD 11/10 00:03
carylorrk: PHP大多只是讓 HTTP server (ex:Apache/Nginx)先處理過 11/10 02:27
carylorrk: HTTP request 再呼叫 PHP code,然後 PHP 內部 lib 又 11/10 02:29
carylorrk: 處理了一些事,你纔可以直接寫 PHP handler function 11/10 02:31
carylorrk: 然後取得 request 的一些資料(像是用 $_GET取得 query 11/10 02:32
carylorrk: parameter),並且回傳 HTML,這些 HTML 又由 PHP Lib 11/10 02:36
carylorrk: 和 HTTP server 包裝成 response 傳回 client 端。 11/10 02:36
carylorrk: Python 看你是要自己處理 TCP connection 還是用內建的 11/10 02:37
carylorrk: http.serve 都是很底層的方式。再來就是用 HTTP server 11/10 02:38
carylorrk: 或是 cherrypy 這種來做比較強大的 HTTP 處理。 11/10 02:40
carylorrk: 注意這裡不是說兩者等價 XD 11/10 02:42
carylorrk: 前面都是在處理 HTTP protocol 的抽象化,Django 則更 11/10 02:44
carylorrk: 多琢磨在網站程式架構的軟工上面。最大的部分就是MVC, 11/10 02:46
carylorrk: 像是 URL routing、HTML template、 database model 等 11/10 02:47
carylorrk: 軟體架構方便你撰寫大型網站。不過當你寫遊戲的時候這 11/10 02:47
carylorrk: 些東西可能並不是很適合。你可以看看 Django 的 tute 11/10 02:50
carylorrk: 會更有感覺,再來自行判斷需不需要 Django 的幫助。 11/10 02:51
carylorrk: 再來就是你 Client 端到底熟悉嗎?知道如何使用 JS 操 11/10 02:53
carylorrk: 作 DOM 做一些效果或 check 嗎?如果會的話我想 JQuery 11/10 02:54
carylorrk: 概念上應該不會太難。 11/10 02:55
carylorrk: 如果不熟悉就到 tute 的網站仔細看一遍,等學完基本的 11/10 02:59
carylorrk: 程式語法及DOM操作後,一定會提到 AJAX。其實這個名字 11/10 03:00
carylorrk: 已經跟原本不太符合了,不過現在簡單來說就是由你的JS 11/10 03:00
carylorrk: 程式向 server 發起 request(而非由browser)。這樣的好 11/10 03:01
carylorrk: 處是當你取得 response 後可以由 js 來處理並 update 11/10 03:02
carylorrk: 部分的網頁內容,可以避免整頁重整的閃爍問題。 11/10 03:03
carylorrk: 前面一直提到 response,通常 response 都是 HTML 頁面 11/10 03:04
carylorrk: 但是當用了 ajax,你的 response 可以只回傳一些資料, 11/10 03:04
carylorrk: 再由 js 處理並加入 html 當中。這裡就要講到資料的 11/10 03:05
carylorrk: serialization。一般資料在不同程式語言的記憶體layout 11/10 03:06
carylorrk: 一定會不同。像是 Python 的 Object 和 JS 的 object 11/10 03:07
carylorrk: 顯然差很多。serialization 就是把資料的表達方式規格 11/10 03:07
carylorrk: 化。這種規格化可以是 binary (前32bit放 first field 11/10 03:09
carylorrk: 等),或是人類理解的 text。XML 和 JSON 就是屬於後者 11/10 03:09
carylorrk: 他們規範了一些常見的資料形態(integer,string,array) 11/10 03:10
carylorrk: 的文字表達方式,讓不同程式、儲存媒介都可以瞭解。這 11/10 03:11
carylorrk: 樣你就可以在 python 把資料 serialize 後放入 respons 11/10 03:12
carylorrk: 再由 JS deserialize 得到資料來處理。 11/10 03:15
carylorrk: 前端現在很流行的還有像是 backbone、angular等架構, 11/10 03:16
carylorrk: 等你瞭解這些基本概念後再去看會覺得很舒服(?)XD 11/10 03:17
carylorrk: 現在基本上你提到的幾個 component 都串聯起來了,最後 11/10 03:17
carylorrk: 一個是 GAE。 GAE 基本上你可以想象他是一個幫你架好 11/10 03:18
carylorrk: HTTP server,灌好環境(python、library、database)的 11/10 03:19
carylorrk: 一臺 server。所以你只要上傳程式就可以直接變成網站。 11/10 03:20
carylorrk: 不過比較特別的是你要注意他『灌』的那些環境可能跟一 11/10 03:20
carylorrk: 般不太一樣,所以你需要好好看一遍他有哪些東西可以用 11/10 03:21
carylorrk: 我這輩子第一次寫網站(國中用 frontpage 拉的除外)就 11/10 03:22
carylorrk: 是 Django + GAE + Google map 和 FB 的 js api。瞭解 11/10 03:23
carylorrk: 第一次寫要串聯一定很痛苦XD 遇到問題先寫看看試看看就 11/10 03:25
carylorrk: 對了。有的時候遠比看一堆資料還來得有用! 11/10 03:25
carylorrk: PS. 我對遊戲部分不熟,所以可能要看其他版友的經驗了 11/10 03:26
carylorrk: 還有,等你實際寫過後會發現我講的很多是簡化甚至錯誤 11/10 03:30
carylorrk: 的,這裡只是用比較易懂的方式講解。也有可能是我本來 11/10 03:31
carylorrk: 概念就不好啦,畢竟一輩子也沒寫過幾次網頁 XD 11/10 03:31
fishlinghu: 非常謝謝你願意花時間回了這麼詳細QQ 11/10 06:53
fishlinghu: 我今天看了很多資料 在看你說的東西有比較懂了! 11/10 06:54
fishlinghu: 被你一說我才發現我好像寫過client端的Javascript 11/10 06:54
fishlinghu: 當時應該就是Server端的部分有人用Python寫好了所以 11/10 06:55
fishlinghu: 我才沒有知覺XD 現在我要來認真檢視一下哪個framework 11/10 06:56
fishlinghu: 比較適合我想做的東西了 超感謝你的解惑!! 11/10 06:56
carylorrk: 事實上 server 端用什麼語言,包括 PHP,都可以啦! 11/13 15:43
carylorrk: 只是想說一開始寫 PHP 普遍過於依賴嵌入功能。並沒有說 11/13 15:45
carylorrk: PHP 沒辦法達到什麼功能或多不好之類的XD 11/13 15:45