flask學習筆記(三) –URL與檢視函式對映

flask學習筆記(三) –URL與檢視函式對映

歡迎加入知了課堂,學習flask

Python Flask系列(1)——基礎:http://study.163.com/course/courseMain.htm?courseId=1004091002

Python Flask框架——全棧開發: http://study.163.com/course/courseMain.htm?courseId=1004507006

客戶端通過URL(統一資源定位符)訪問伺服器上的特定資源,今天介紹如何使用flask完成到檢視函式對映這一環節。

一.基本用法

@app.route( '/' )
def hello_world():
return 'Hello World!'

        首先要用到的就是修飾器 @app.route(‘ / ‘),它吧下面 hello_world()這個檢視函式修飾成路由,括號裡的引數規定請求的路徑。這樣使用者就可以根據 ‘/’ 這個路徑,訪問檢視函式。比如:IP地址是 127.0.0.1 ,埠是 5000、使用http協議 瀏覽器輸入 http://127.0.0.1:5000/就能訪問到這個檢視函式,伺服器隨後給瀏覽器返回一個字串 ‘Hello World!’。一個檢視函式可以指定多個URL路徑,後面我再介紹配置方法。

二.將引數巢狀在路徑裡

        @app.route(‘ xxx ‘) 路徑引數可以寫死,也可以是變化的。比如,app.route(‘ /index/ ‘) 這樣你只能通過 http://127.0.0.1:5000/index/ 來訪問下面的檢視函式,index在這裡只能算是一個字串常量。如果路徑的某一部分能夠接受不同的資料,並把資料作為引數傳入檢視函式進處理,實現不同的返回。這樣就能針對使用者不同的輸入展示不同的歡迎資訊。聽上去很不錯,那麼怎麼實現呢?

@app.route( '/user/<name>' )
def index(name):
return '歡迎:{}'.format(name)

  

    傳遞引數的語法是:`/<引數名>/`。然後在檢視函式中,也要定義同名的引數。

    要給引數指定資料型別,語法是 ‘/<型別名:引數名>/’。

1.如果沒有指定具體的資料型別,那麼預設就是使用`string`資料型別。

2. `int`資料型別只能傳遞`int`型別。

3. `float`資料型別只能傳遞`float`型別。

4. `path`資料型別和`string`有點類似,都是可以接收任意的字串,但是`path`可以接收路徑,也就是說可以包含斜槓。

5. `uuid`資料型別只能接收符合`uuid`的字串。`uuid`是一個全宇宙都唯一的字串,一般可以用來作為表的主鍵。

6.前面說過可以給一個檢視函式指定多個url,是通過`any`資料型別,可以在一個`url`中指定多個路徑。例如:

    “`python

    @app.route(‘/<any(blog,article):url_path>/<id>/’)

    def detail(url_path,id):

        if url_path == ‘blog’:

            return ‘部落格詳情:%s’ % id

        else:

            return ‘部落格詳情:%s’ % id

    “`

三.另一種URL傳參的方法

        第一種:使用path的形式(將引數嵌入到路徑中),就是上面講的。第二種:使用查詢字串的方式,就是通過`?key=value`的形式傳遞的。比如, http://127.0.0.1:5000/index/?wd=value  ,在檢視函式這邊對應的處理如下

    @app.route(‘/index/’)

    def d():

        wd = request.args.get(‘wd’)

        return ‘您通過查詢字串的方式傳遞的引數是:%s’ % wd

使用request方法,要引入這個類

from flask import Flask,request


四.總結
   如果你的這個頁面的想要做`SEO`優化,就是被搜尋引擎搜尋到,
   那麼推薦使用第一種形式(path的形式)。如果不在乎搜尋引擎優化,
   那麼就可以使用第二種(查詢字串的形式)。

歡迎加入知了課堂,學習flask

Python Flask系列(1)——基礎:http://study.163.com/course/courseMain.htm?courseId=1004091002

Python Flask框架——全棧開發: http://study.163.com/course/courseMain.htm?courseId=1004507006