SlideShare a Scribd company logo
The Django Book
Chapter 2 Views and URLconfs
20160524
Django讀書會-EK
內容
2.1 Your First View
2.2 Your First URLconf
2.3 Regular Expressions
2.4 How Django Process a Request
2.5 Your Second View Dynamic Content
2.6 Your Third View Dynamic URL
2
新增 mysite/views.py
2.1 Your First View
class in django.
http module
慣例上,最少要一個變數 request
1. 匯入 HttpResponse
2. 寫一個 view 的函數
3. 最後 回傳結果,透過HttpRespnse傳文字 Hello world
3
2.2 First URLconf
寫完 view hello後,Django仍然不認識它,要透過URLconf,讓URLs和view函數可
以對應
1. 把寫好的 hello (view) import 進來
2. 將對應 hello函數 的路徑寫出來
r’^hello/$’
r:raw string
^:start
$:end
4
2.2 First URLconf
● 如果 pattern ‘^hello/’(沒有$)
○ 它會去尋找任何一個開頭是 /hello/,像是 /hello/foo or /hello/bar
● 如果 pattern ‘hello/$’(沒有^)
○ 它會去尋找任何一個結尾是 /hello/,像是 /foo/bar/hello
● 如果 pattern ‘hello/’(沒有$,^)
○ 它會去尋找任何一個包含 /hello/,像是 /foo/hello/bar
因此一開頭結尾一定要加上^和$
5
2.3 Regular Expressions
為一種正規表示法
6
2.4 How Django Processes a Request(1/2)
1.當輸入網址 127.0.0.1:8000/hello
2.會根據 settings.py ROOT_URLCONF= ‘xxx.urls’
3. 對應到 hello,到 views.py裡面去執行
7
2.4 How Django Processes a Request(2/2)
4.找到 def hello
5.執行 return,透過 HttpResponse 回傳字串 “Hello world”,並顯示在瀏覽器上
8
2.5 Second View: Dynamic Content(1/3)
接下來動態的內容要顯示進入網頁的日期和時間,會用到datetime
1.先在views.py實作出來。
9
2.5 Second View: Dynamic Content(2/3)
2.在urls.py設定,讓網址可以對應到實作
10
2.5 Second View: Dynamic Content(3/3)
3.進入 127.0.0.1:8000/time
11
2.6 Third View: Dynamic URLs(1/3)
上一個動態內容出現在在時間,接下來要透過動態的方式透過網址傳值來更改顯示
內容。
希望做到 127.0.0.1:8000/time/plus/** 可以讓顯示的時間 往後增加0-99小時
1.改寫urls.py
d:10進位數字
{1,2}:1-2位數字
d{1,2}:可以任意 0-99的數字
12
2.6 Third View: Dynamic URLs(2/3)
2.實作 hours_ahead (增加**小時)
將 offset轉成數字,如果ValueError
出現404錯誤
dt:將現在時間加上 offset時間
datetime.timedelta(hours):轉成
hour的格式
13
2.6 Third View: Dynamic URLs(3/3)
3.瀏覽器顯示
14

More Related Content

PPT
Perl在nginx里的应用
PDF
Django 實戰 - 自己的購物網站自己做
PDF
那些年,我用 Django Admin 接的案子
PDF
Chapter 4 models
PDF
Chapter 3 templates
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
PDF
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
Perl在nginx里的应用
Django 實戰 - 自己的購物網站自己做
那些年,我用 Django Admin 接的案子
Chapter 4 models
Chapter 3 templates
2024 Trend Updates: What Really Works In SEO & Content Marketing
Storytelling For The Web: Integrate Storytelling in your Design Process
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
Ad

Chapter 2 views and urlconfs

  • 1. The Django Book Chapter 2 Views and URLconfs 20160524 Django讀書會-EK
  • 2. 內容 2.1 Your First View 2.2 Your First URLconf 2.3 Regular Expressions 2.4 How Django Process a Request 2.5 Your Second View Dynamic Content 2.6 Your Third View Dynamic URL 2
  • 3. 新增 mysite/views.py 2.1 Your First View class in django. http module 慣例上,最少要一個變數 request 1. 匯入 HttpResponse 2. 寫一個 view 的函數 3. 最後 回傳結果,透過HttpRespnse傳文字 Hello world 3
  • 4. 2.2 First URLconf 寫完 view hello後,Django仍然不認識它,要透過URLconf,讓URLs和view函數可 以對應 1. 把寫好的 hello (view) import 進來 2. 將對應 hello函數 的路徑寫出來 r’^hello/$’ r:raw string ^:start $:end 4
  • 5. 2.2 First URLconf ● 如果 pattern ‘^hello/’(沒有$) ○ 它會去尋找任何一個開頭是 /hello/,像是 /hello/foo or /hello/bar ● 如果 pattern ‘hello/$’(沒有^) ○ 它會去尋找任何一個結尾是 /hello/,像是 /foo/bar/hello ● 如果 pattern ‘hello/’(沒有$,^) ○ 它會去尋找任何一個包含 /hello/,像是 /foo/hello/bar 因此一開頭結尾一定要加上^和$ 5
  • 7. 2.4 How Django Processes a Request(1/2) 1.當輸入網址 127.0.0.1:8000/hello 2.會根據 settings.py ROOT_URLCONF= ‘xxx.urls’ 3. 對應到 hello,到 views.py裡面去執行 7
  • 8. 2.4 How Django Processes a Request(2/2) 4.找到 def hello 5.執行 return,透過 HttpResponse 回傳字串 “Hello world”,並顯示在瀏覽器上 8
  • 9. 2.5 Second View: Dynamic Content(1/3) 接下來動態的內容要顯示進入網頁的日期和時間,會用到datetime 1.先在views.py實作出來。 9
  • 10. 2.5 Second View: Dynamic Content(2/3) 2.在urls.py設定,讓網址可以對應到實作 10
  • 11. 2.5 Second View: Dynamic Content(3/3) 3.進入 127.0.0.1:8000/time 11
  • 12. 2.6 Third View: Dynamic URLs(1/3) 上一個動態內容出現在在時間,接下來要透過動態的方式透過網址傳值來更改顯示 內容。 希望做到 127.0.0.1:8000/time/plus/** 可以讓顯示的時間 往後增加0-99小時 1.改寫urls.py d:10進位數字 {1,2}:1-2位數字 d{1,2}:可以任意 0-99的數字 12
  • 13. 2.6 Third View: Dynamic URLs(2/3) 2.實作 hours_ahead (增加**小時) 將 offset轉成數字,如果ValueError 出現404錯誤 dt:將現在時間加上 offset時間 datetime.timedelta(hours):轉成 hour的格式 13
  • 14. 2.6 Third View: Dynamic URLs(3/3) 3.瀏覽器顯示 14