最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1、視圖函數(shù)

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

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

def hello_user(name):

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

上面的hello_user()函數(shù)就是一個簡單的視圖函數(shù)。

當然我們也可以不使用app.route裝飾器,使用app.add_url_rule()方法也可將視圖函數(shù)和 url 進行綁定,實際上裝飾器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()方法,可以將路由同視圖分開,方便將路由進行統(tǒng)一管理。

2、類視圖

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

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

2.1 標準類視圖

標準類視圖的寫法:

  • 父類必須繼承 flask.views.View
  • 子類實現(xiàn)dispatch_request()方法,完成自身的業(yè)務(wù)邏輯并返回結(jié)果
  • 子類使用app.add_url_rule()進行注冊,其中view_func參數(shù)使用as_view()方法做類方法轉(zhuǎn)換
  • 如果注冊時指定了endpoint參數(shù),endpoint的值會覆蓋指定的視圖名稱,使用url_for時就必須使用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)建了一個 ParentView 類,繼承自 flask.views.View 類,然后創(chuàng)建了 Index User 兩個類繼承自 ParentView 類,并分別重寫實現(xiàn)了dispatch_request()函數(shù),使用了父類 ParentView 的屬性public_data, 實現(xiàn)自己的業(yè)務(wù)邏輯。然后我們通過as_view()方法把類轉(zhuǎn)換為實際的視圖函數(shù),as_view()必須傳入一個唯一不重復(fù)的視圖名。此后,這個視圖由app.add_url_rule()方法和指定路由綁定。

類視圖支持的 HTTP 請求方法由視圖類變量methods指定,默認只支持 GET 請求。

2.1.1 基于方法的視圖

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

下面看下詳細使用方法。

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 請求,post()函數(shù)用于處理 POST 請求,代碼中省去了 HTTP 請求方法的判斷語句,而且是不是更加RESTFul一些了。

請求測試:

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

相關(guān)文章

  • 關(guān)于Numpy中數(shù)組維度的理解

    關(guān)于Numpy中數(shù)組維度的理解

    這篇文章主要介紹了關(guān)于Numpy中數(shù)組維度的理解,多維Numpy數(shù)組也可以叫張量(tensor),當前所有機器學習系統(tǒng)都是使用張量作為基本數(shù)據(jù)結(jié)構(gòu),張量是一個數(shù)據(jù)容器,它包含的數(shù)據(jù)幾乎是數(shù)值數(shù)據(jù),因此它也是數(shù)字的容器,需要的朋友可以參考下
    2023-09-09
  • Python使用dict.fromkeys()快速生成一個字典示例

    Python使用dict.fromkeys()快速生成一個字典示例

    這篇文章主要介紹了Python使用dict.fromkeys()快速生成一個字典,結(jié)合實例形式分析了Python基于dict.fromkeys()生成字典的相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • Python自動檢測requests所獲得html文檔的編碼

    Python自動檢測requests所獲得html文檔的編碼

    這篇文章主要為大家詳細介紹了如何通過Python自動檢測requests實現(xiàn)獲得html文檔的編碼,文中的示例代碼講解詳細,感興趣的可以了解下
    2024-11-11
  • Python中Selenium庫使用教程詳解

    Python中Selenium庫使用教程詳解

    這篇文章主要介紹了Python中Selenium庫使用教程詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • python重復(fù)值處理得方法

    python重復(fù)值處理得方法

    這篇文章主要介紹了python重復(fù)值處理得方法,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • Python實現(xiàn)微信消息防撤回功能的實例代碼

    Python實現(xiàn)微信消息防撤回功能的實例代碼

    這篇文章主要介紹了Python實現(xiàn)微信消息防撤回 ,需要的朋友可以參考下
    2019-04-04
  • 一文詳解如何在瀏覽器前端運行Python程序

    一文詳解如何在瀏覽器前端運行Python程序

    這篇文章主要介紹了如何在瀏覽器前端運行Python程序的相關(guān)資料,在前端運行Python代碼的多種方式,包括Pyodide、Brython、Transcrypt等,每種方式都有其特點和適用場景,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • pytorch對可變長度序列的處理方法詳解

    pytorch對可變長度序列的處理方法詳解

    今天小編就為大家分享一篇pytorch對可變長度序列的處理方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • django使用圖片延時加載引起后臺404錯誤

    django使用圖片延時加載引起后臺404錯誤

    本文給大家介紹的是作者在Django中使用圖片的延時加載技術(shù)后引起后臺404錯誤的問題以及解決思路和方法,有需要的小伙伴可以參考下
    2017-04-04
  • 使用C語言擴展Python程序的簡單入門指引

    使用C語言擴展Python程序的簡單入門指引

    這篇文章主要介紹了使用C語言擴展Python程序的簡單入門指引,來自于IBM官網(wǎng)網(wǎng)站技術(shù)文檔,需要的朋友可以參考下
    2015-04-04

最新評論

大兴区| 安图县| 福安市| 嵊州市| 武宣县| 东平县| 酒泉市| 石棉县| 巫溪县| 泰兴市| 夏津县| 太谷县| 葫芦岛市| 体育| 临朐县| 岳阳市| 上思县| 库车县| 阿拉尔市| 芜湖县| 晋江市| 大竹县| 牡丹江市| 柳林县| 巴彦淖尔市| 宜阳县| 梧州市| 安仁县| 邵武市| 通榆县| 苏州市| 鹿泉市| 宽甸| 章丘市| 东乌珠穆沁旗| 夏邑县| 卢湾区| 吴旗县| 大渡口区| 广宗县| 迭部县|