欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于Flask 視圖介紹

 更新時(shí)間:2021年11月26日 09:47:48   作者:tigeriaf  
這篇文章主要分享的是關(guān)于Flask 視圖介紹, Flask 中路由是請(qǐng)求的 url 與處理函數(shù)之間的映射,使用app.route裝飾器將處理函數(shù)和 url 綁定,路由綁定的處理函數(shù)就被成為視圖函數(shù)。下面來看文章的詳細(xì)內(nèi)容,需要的朋友也可以參考一下

1、視圖函數(shù)

之前的文章說過,在 Flask 中路由是請(qǐng)求的 url 與處理函數(shù)之間的映射,使用app.route裝飾器將處理函數(shù)和 url 綁定,路由綁定的處理函數(shù)就被成為視圖函數(shù)。

@app.route('/user/<name>')

def hello_user(name):

    return 'Hello {}!'.format(name)

上面的hello_user()函數(shù)就是一個(gè)簡(jiǎn)單的視圖函數(shù)。

當(dāng)然我們也可以不使用app.route裝飾器,使用app.add_url_rule()方法也可將視圖函數(shù)和 url 進(jìn)行綁定,實(shí)際上裝飾器app.route也是調(diào)用的app.add_url_rule()方法。

def hello():

    return 'hello Flask!'

app.add_url_rule('/hello', view_func=hello)

通過app.add_url_rule()方法,可以將路由同視圖分開,方便將路由進(jìn)行統(tǒng)一管理。

2、類視圖

我們之前包括上面使用的,都是基于函數(shù)的視圖,這雖然是最簡(jiǎn)單便捷的用法,但是不容易擴(kuò)展,其實(shí)視圖函數(shù)也可以基于類來實(shí)現(xiàn),好處就是類支持繼承,可以把一些共性的代碼放在父類中,其他子類可以繼承,在某些情況下,使用類更合理,更易于擴(kuò)展。

類視圖分為標(biāo)準(zhǔn)類視圖和基于調(diào)度方法的類視圖,下面分別介紹一下。

2.1 標(biāo)準(zhǔn)類視圖

標(biāo)準(zhǔn)類視圖的寫法:

  • 父類必須繼承 flask.views.View
  • 子類實(shí)現(xiàn)dispatch_request()方法,完成自身的業(yè)務(wù)邏輯并返回結(jié)果
  • 子類使用app.add_url_rule()進(jìn)行注冊(cè),其中view_func參數(shù)使用as_view()方法做類方法轉(zhuǎn)換
  • 如果注冊(cè)時(shí)指定了endpoint參數(shù),endpoint的值會(huì)覆蓋指定的視圖名稱,使用url_for時(shí)就必須使用endpoint指定的值

具體使用方式如下:

from flask.views import View

class ParentView(View):

    def __init__(self):

        super().__init__()

        # 公共部分信息

        self.public_data = 'Flask Web App'

class Index(ParentView):

    methods = ['GET']

    def dispatch_request(self):

        return self.public_data + " index"

class User(ParentView):

    methods = ['POST']

    def dispatch_request(self):

        return self.public_data + " user"

app.add_url_rule('/index', endpoint='index', view_func=Index.as_view('index'))

app.add_url_rule('/user', endpoint='user', view_func=User.as_view('user'))

上述代碼中創(chuàng)建了一個(gè) ParentView 類,繼承自 flask.views.View 類,然后創(chuàng)建了 Index User 兩個(gè)類繼承自 ParentView 類,并分別重寫實(shí)現(xiàn)了dispatch_request()函數(shù),使用了父類 ParentView 的屬性public_data, 實(shí)現(xiàn)自己的業(yè)務(wù)邏輯。然后我們通過as_view()方法把類轉(zhuǎn)換為實(shí)際的視圖函數(shù),as_view()必須傳入一個(gè)唯一不重復(fù)的視圖名。此后,這個(gè)視圖由app.add_url_rule()方法和指定路由綁定。

類視圖支持的 HTTP 請(qǐng)求方法由視圖類變量methods指定,默認(rèn)只支持 GET 請(qǐng)求。

2.1.1 基于方法的視圖

如果視圖支持多種 HTTP 請(qǐng)求方法的話,之前我們都是在視圖函數(shù)中進(jìn)行判斷,根據(jù)不同的請(qǐng)求方法執(zhí)行不同的業(yè)務(wù)邏輯,那有沒有更簡(jiǎn)單的方法呢?是有的,Flask 中的方法類視圖 flask.views.MethodView 就可以做到,它是 flask.views.View 的子類,通過定義和請(qǐng)求方式同名的小寫方法來完成了邏輯處理,不必提供methods屬性,每個(gè) HTTP 方法都映射到一個(gè)具有相同名稱(小寫)的函數(shù)。

下面看下詳細(xì)使用方法。

from flask.views import MethodView

class UserView(MethodView):

    def get(self):

        user_id = request.args.get("user_id")

        return "Hello user:{}".format(user_id)



    def post(self):

        name = request.form.get("name")

        password = request.form.get("password")

        if name == "admin" and password == "123456":

            return "hello admin!"

        else:

            return "not allow!"

app.add_url_rule('/user/get_info', view_func=UserView.as_view('get'))

app.add_url_rule('/user/login', view_func=UserView.as_view('post'))

代碼中定義的get()函數(shù)用于處理 GET 請(qǐng)求,post()函數(shù)用于處理 POST 請(qǐng)求,代碼中省去了 HTTP 請(qǐng)求方法的判斷語句,而且是不是更加RESTFul一些了。

請(qǐng)求測(cè)試:

到此這篇關(guān)于 關(guān)于Flask 視圖介紹的文章就介紹到這了,更多相關(guān)Flask 視圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Python制作三款起床鬧鐘的示例代碼

    基于Python制作三款起床鬧鐘的示例代碼

    每天上班最痛苦的事情就是早起早起早起!這是大部分上班族的痛苦,但是不上班又是不可能的啦,因?yàn)槎际菫榱烁沐X。本文用Python制作了三款有趣的鬧鐘,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • Python eval函數(shù)原理及用法解析

    Python eval函數(shù)原理及用法解析

    這篇文章主要介紹了Python eval函數(shù)原理及用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python中使用logging和traceback模塊記錄日志和跟蹤異常

    Python中使用logging和traceback模塊記錄日志和跟蹤異常

    今天小編就為大家分享一篇關(guān)于Python中使用logging和traceback模塊記錄日志和跟蹤異常,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • Flask?web上傳獲取圖像Image讀取并使用方式

    Flask?web上傳獲取圖像Image讀取并使用方式

    這篇文章主要介紹了Flask?web上傳獲取圖像Image讀取并使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python使用cookielib庫示例分享

    python使用cookielib庫示例分享

    Python中cookielib庫(python3中為http.cookiejar)為存儲(chǔ)和管理cookie提供客戶端支持,下面是使用示例
    2014-03-03
  • 如何在Flask中進(jìn)行異常處理實(shí)例解析

    如何在Flask中進(jìn)行異常處理實(shí)例解析

    這篇文章主要為大家介紹了如何在Flask中進(jìn)行異常處理實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • python 實(shí)現(xiàn)簡(jiǎn)易的記事本

    python 實(shí)現(xiàn)簡(jiǎn)易的記事本

    這篇文章主要介紹了python 實(shí)現(xiàn)簡(jiǎn)易的記事本的示例代碼,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11
  • Python基礎(chǔ)教程之多線程編程詳解

    Python基礎(chǔ)教程之多線程編程詳解

    Python支持多線程編程和多進(jìn)程編程,在本教程中,我們將學(xué)習(xí)有關(guān)Python多線程編程的基礎(chǔ)知識(shí)、線程同步、線程池以及如何使用多進(jìn)程,需要的朋友可以參考下
    2023-06-06
  • Python3 如何開啟自帶http服務(wù)

    Python3 如何開啟自帶http服務(wù)

    這篇文章主要介紹了Python3 開啟自帶http服務(wù)的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Qt實(shí)現(xiàn)炫酷啟動(dòng)圖動(dòng)態(tài)進(jìn)度條效果

    Qt實(shí)現(xiàn)炫酷啟動(dòng)圖動(dòng)態(tài)進(jìn)度條效果

    最近接到一個(gè)新需求,讓做一個(gè)動(dòng)效進(jìn)度條。剛接手這個(gè)項(xiàng)目真的不知所措,后來慢慢理清思路,問題迎刃而解,下面小編通過本文給大家?guī)砹薗t實(shí)現(xiàn)炫酷啟動(dòng)圖動(dòng)態(tài)進(jìn)度條效果,感興趣的朋友一起看看吧
    2021-11-11

最新評(píng)論