今天學習了Django的工做流程: css
一張流程圖告訴你,django的處理流程: html
URL組成: 前端
做爲網站的用戶,咱們首先在瀏覽器的輸入框內輸入:http://127.0.0.1:8000/index/ python
協議類型:HTTP,FTP mysql
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它可使瀏覽器更加高效,使網絡傳輸減小。它不只保證計算機正確快速地傳輸超文本文檔,還肯定傳輸文檔中的哪一部分,以及哪部份內容首先顯示等 。 正則表達式
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。 sql
主機地址:itest.info ,127.0.0.1 數據庫
前者是一個網址,網址經過域名解析服務器會找到對應的IP地址。後者就是一個IP地址。 django
127.0.0.1 指向的就是本機的IP地址。 api
端口號: 8000
端口號用於區分標識同一臺主機的不一樣應用。一臺主機上有不少應用,你訪問我這臺主機時若是指定的是8000,那麼就是知道是你來訪問我用django開發的blog的。固然,這個端口是能夠任意分配的。
路徑 : /index/ 、/admin
通常用來表示主機上的一個目錄或文件地址。
urls的配置
django經過urls.py配置文件很好的處理了前端請求的指向,其中使用使用Python的正則表達式可使匹配變得更靈活。
打開django下面的urls.py文件:
r'^index/$'
這是一個使用了python的正則表達式。
字符串有前面加「 r 」是爲了防止字符串中出現相似「\t」字符時被轉義。
django在拿到URL地址後,取端口號後面的文件夾路徑(/index/)進行配置,結果^index/$ 能夠對這個文件路徑進行匹配。那麼將指向blog.views.index 這個地址.
model模型
Django用模型在後臺執行SQL代碼並把結果用Python的數據結構來描述。Django也使用模型來呈現SQL沒法處理的高級概念。模型用於數據庫的建立,在settings.py文件中配置數據庫的鏈接,
在應用的的models.py文件中建立模型,爲了不直接操做數據庫,經過建立模型去生成對應的數據庫表。
執行數據庫同步會建立一張BlogsPost表,表分別會有title、body、timestamp三個字段。其中title定義爲char類型,定義最長150字符;body爲text文本類型;timestamp爲日期時間類型。
咱們不用關心到底怎麼建立表,只要建立好模型就行了,剩下的由djnago來幫咱們生成對應的表。下面是將模型建立成數據庫表的命令:
1.Python manage.py makemigrations
至關於 在該app下創建 migrations目錄,並記錄下你全部的關於models.py的改動,好比0001_initial.py, 可是這個改動尚未做用到數據庫文件你能夠手動打開這個文件,看看裏面是什麼在此以後執行命令
2.Python manage.py migrate
將該改動做用到數據庫文件,好比產生table之類
當makemigrations以後產生了0001_initial.py 文件,你能夠查看下該migrations會對應於什麼樣子的SQL命令
python manger.py sqlmigrate theapp 0001
Views 視圖
視圖能夠看做是前端與數據庫的中間人,他會將前端想要的數據從數據庫中讀出來給前端。他也會將用戶要想保存的數據寫到數據庫。
Views.py
這裏index函數作了兩件事兒:
blog_list =BlogsPost.objects.all()
查詢到BlogsPost數據庫裏的全部數據,賦值給blog_list變量。
return render_to_response('index.html',{'blog_list':blog_list})
經過render_to_response() 返回給瀏覽器一個index.html頁面,而且將blog_list變量的值也返回給index.html。
自django1.3開始:render()方法是render_to_response的一個嶄新的快捷方式,前者會自動使用RequestContext。然後者必須coding出來,這是最明顯的區別,固然前者更簡潔。
templates模板
模板就是咱們所熟悉的頁面了,django自帶的有模板系統。它的主要做用是如何展現數據,好比視圖返回了一堆數據過來。是都循環顯示出來呢?還經過判斷只顯示你認爲有用的呢? 固然,這裏爲了使頁面更漂亮須要藉助前端技術,好比css、JavaScript等。
大白話:
http://127.0.0.1:8000/index 這麼一個地址,瀏覽器直接輸入的話就是get方法,8000前面的是服務器的地址,後面是url也就是你view.py裏面定義的,當把這個請求發送到後臺時,服務器會去解析,有沒有對應的url匹配(在view.py裏面),若是有,那最後調用什麼方法來處理,這裏就是用的index方法。index方法傳入一個參數request,這個就是請求,因此你能夠寫個if判斷,他的請求方法是get仍是post
,若是是get,那麼怎麼處理(例如,能夠返回一個字符串hello Jack!;也能夠返回一組數據,那就是返回到一個html上,而後這個響應帶有要返回的數據,就是這裏的data,而後你html上就要去解析這個data,用某種語法,這裏暫時能夠不考慮)。若是是post,那這個請求會帶有參數(例如,這裏是username和password),那你就能夠把這個參數取出來(request.post.get()),取出來以後要怎麼處理,就看你的業務邏輯是怎麼樣(例如,這裏想驗證這個對不對,那就能夠,比較一下username是否是等於**,若是等於,就返回成功,不然返回失敗)。這裏的返回,以前說了的有兩種,直接返回字符串就直接httpresponse,返回html的話,就要新建一個html文件(前面那個是index.html,是用來登錄的對吧,如今驗證你登錄狀況的,有可能成功或者失敗)例如,建立一個successful.html,裏面有登錄成功這幾個字。。。。