2014年11月1日 星期六

Python URL and Views (二)

URL
針對使用者HttpRequest的請求,回應正確的Views function給使用者。

透過urlpatterns變數

來進行pattern跟views function的對應。
基本概念請先讀 Python URL and Views (一)


透過RUL傳送某些參數給views
有時候我們必須從前端取得一些使用的參數,
這個時候,可以透過URL接收到的參數跟pattern
還呼叫對應的Views Function

可傳送給Views的參數可以有兩種類型

(1) 用小括號將參數包起來的數字型態 (\d{1,2})

(2) 使用Keyword來接收字串型態 (?P<year>)

一、RUL數字型態參數
urlpatterns = patterns('',
    url(r'^test/(\d{4})/$', views.test_fun),
)

  • \d : 為後面參數是數字型態
  • {條件} 數字型態接收的條件。{4}代表四位數
  • (\d{+}) : 加號(+)表示不論是幾位數、無限次。

這裡表示當URL如果符合,就呼叫views的test_fun方法。


Views

在前面說過,只要是接收HttpRequest,views被呼叫的Function第一個參數都必須是Request。

因為又接收URL的其他參數
所以Function必須要在接收從URL傳來的參數


def test_fun (request , num):

     pass;
這個num參數將會接受從URL傳來的(\d{4})的數字。
值得注意的是,傳送給Views的型態為String

因此如果要做運算,記得要把它轉成int


二、
RUL字串型態參數
urlpatterns = patterns('',
    url(r'^test/(?P<year>\d{4})/$', views.test_fun),
)

  • ?P<參數Keyword> : Keyword為View和Template傳送參數的判斷
  • \d{4}:代表這個Keyword是四位數的數字。
  • [A-Z] : 代表大寫A到Z的任意字母
  • \w+ : 代表任意文字或數字出現不限次數。
  • 其他可以參考python的正則表達。
這個Keyword方便之後檢查bug或是更容易讀取code。

Views
當接收year參數時候,Views的參數接受,必須跟RUL設定的Keyword參數一致。
def test_fun (request , year=2014):

     pass;
這裡year=2014表示預設值為2014,當接受URL傳送的參數後,year會顯示從URL傳送來的數字。

沒有留言:

張貼留言