欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python web框架:flask視圖函數(shù)

系統(tǒng) 1608 0

1.Django中的CBV模式

在這里插入圖片描述

2.Flask中的CBV和FBV

          
            def auth(func):
    def inner(*args, **kwargs):
        result = func(*args, **kwargs)
        return result
    return inner

class IndexView(views.MethodView):
    # methods = ['POST']  #只允許POST請(qǐng)求訪問(wèn)
    decorators = [auth,]  # 如果想給所有的get,post請(qǐng)求加裝飾器,就可以這樣來(lái)寫(xiě),也可以單個(gè)指定

    def get(self):   #如果是get請(qǐng)求需要執(zhí)行的代碼
        v = url_for('index')
        print(v)
        return "GET"

    def post(self):  #如果是post請(qǐng)求執(zhí)行的代碼
        return "POST"

app.add_url_rule('/index', view_func=IndexView.as_view(name='index'))  #name即FBV中的endpoint,指別名

if __name__ == '__main__':
    app.run()

          
        

類視圖及其使用

視圖函數(shù)不能面向?qū)ο缶幊蹋妙愐晥D來(lái)代替視圖函數(shù)來(lái)解決這個(gè)問(wèn)題

導(dǎo)入視圖類 View

from flask.views import View

編寫(xiě)一個(gè)視圖子類

          
            class MyView(View): # MyView繼承于View

    def test(self):  #  自定義的方法
        return '測(cè)試類視圖'

    def dispatch_request(self):   # 必須重寫(xiě)這個(gè)方法
        resp = self.test()
        return resp

          
        

利用View子類獲取到一個(gè)視圖方法
    MyView.as_view('test')

注意:.as_view方法的放回值是一個(gè)方法,而且該方法的名字就是傳進(jìn)去的參數(shù)

將獲取到的視圖方法和路徑對(duì)應(yīng)起來(lái)
    app.add_url_rule('/test/', view_func=MyView.as_view('test')) # MyView.as_view('test') 返回的是一個(gè)方法

類視圖的原理
    把a(bǔ)s_view方法返回的結(jié)果賦值給view_func
    as_view方法返回的是一個(gè)方法(注意:as_view方法傳入的參數(shù)就是as_view返回的那個(gè)方法的名字),該方法會(huì)調(diào)用dispatch_request方法
    一旦路由進(jìn)來(lái),就會(huì)調(diào)用 dispatch_request 方法
    類視圖的目的就是實(shí)現(xiàn)邏輯分離、方便管理

          
            from flask import Flask
from flask.views import View

app = Flask(__name__)

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

class MyView(View): # MyView繼承于View

    def test(self):  #  自定義的方法
        return '測(cè)試類視圖'

    def dispatch_request(self):   # 必須重寫(xiě)這個(gè)方法
        resp = self.test()
        return resp


app.add_url_rule('/test/', view_func=MyView.as_view('test')) # MyView.as_view('test') 返回的是一個(gè)方法

print(app.url_map)

if __name__ == '__main__':
    app.run(debug=True)

# 把a(bǔ)s_view方法返回的結(jié)果賦值給view_func
# as_view方法返回的是一個(gè)方法(注意:as_view方法傳入的參數(shù)就是as_view返回的那個(gè)方法的名字),該方法會(huì)調(diào)用dispatch_request方法
# 一旦路由進(jìn)來(lái),就會(huì)調(diào)用 dispatch_request 方法
# 類視圖的目的就是實(shí)現(xiàn)邏輯分離、方便管理

          
        

方法視圖及其使用

利用視圖函數(shù)實(shí)現(xiàn)不同的請(qǐng)求執(zhí)行不同的邏輯時(shí)比較復(fù)雜,需要在視圖函數(shù)函數(shù)中進(jìn)行判斷;如果利用方法視圖實(shí)現(xiàn)就比較簡(jiǎn)單

          
            @app.route('/test/', methods=['GET', 'POST'])
def test():
    if request.method == 'GET':
        # 做GET的事情
        pass
    elif request.method == 'POST':
        # 做POST的事情
        pass
    return '測(cè)試'

          
        

導(dǎo)入方法視圖類  
from flask.views import MethodView
創(chuàng)建方法視圖子類

          
            class TestMethodView(MethodView):
    def get(self):
        # 處理Get請(qǐng)求
        return 'GET請(qǐng)求'
    def post(self):
        # 處理post請(qǐng)求
        return 'POST請(qǐng)求'

          
        

注意:視圖類中的方法就是支持的請(qǐng)求類型

利用方法視圖子類創(chuàng)建一個(gè)視圖函數(shù)
    TestMethodView.as_view('testMethodView')

注意:as_view返回的是一個(gè)視圖函數(shù),而且該視圖函數(shù)逇名稱就是傳進(jìn)去的參數(shù)

將獲取到的視圖方法和路徑對(duì)應(yīng)起來(lái)
      app.add_url_rule('/test02/', view_func=TestMethodView.as_view('testMethodView'))

          
            from flask import Flask
from flask import request
from flask.views import MethodView

app = Flask(__name__)

@app.route('/')
def index():
    return '測(cè)試主頁(yè)面'

@app.route('/test/', methods=['GET', 'POST'])
def test():
    if request.method == 'GET':
        # 做GET的事情
        pass
    elif request.method == 'POST':
        # 做POST的事情
        pass
    return '測(cè)試'

class TestMethodView(MethodView):
    def get(self):
        # 處理Get請(qǐng)求
        return 'GET請(qǐng)求'
    def post(self):
        # 處理post請(qǐng)求
        return 'POST請(qǐng)求'

app.add_url_rule('/test02/', view_func=TestMethodView.as_view('testMethodView'))
# method = TestMethodView.as_view('testMethodView');
# app.add_url_rule('/test02/
            
              /', view_func=method, methods=['GET'])

print(app.url_map)

if __name__ == '__main__':
    app.run(debug=True)

            
          
        

雖然在方法視圖中定義的函數(shù)就是支持的請(qǐng)求類型,但是我們可以在配置路徑時(shí)指定哪個(gè)路徑對(duì)應(yīng)哪中類型的請(qǐng)求
利用方法視圖子類獲取一個(gè)名字為testMethodView02的視圖函數(shù),該視圖函數(shù)只能支持GET請(qǐng)求,而且支持轉(zhuǎn)換器

          
            method02 = TestMethodView.as_view('testMethodView02');
app.add_url_rule('/test02/
            
              /', view_func=method02, methods=['GET'])

            
          
        

利用利用方法視圖子類獲取一個(gè)名字為testMethodView03的視圖函數(shù),該視圖函數(shù)只能支持POST請(qǐng)求

          
            method03 = TestMethodView.as_view('testMethodView03')
app.add_url_rule('/test03/', view_func=method03, methods=['POST'])

          
        

模擬POST請(qǐng)求


在這里插入圖片描述
          
            from flask import Flask
from flask import request
from flask.views import MethodView
'''
遇到不懂的問(wèn)題?Python學(xué)習(xí)交流群:821460695滿足你的需求,資料都已經(jīng)上傳群文件,可以自行下載!
'''
app = Flask(__name__)

@app.route('/')
def index():
    return '測(cè)試主頁(yè)面'

@app.route('/test/', methods=['GET', 'POST'])
def test():
    if request.method == 'GET':
        # 做GET的事情
        pass
    elif request.method == 'POST':
        # 做POST的事情
        pass
    return '測(cè)試'

class TestMethodView(MethodView):
    def get(self, name):
        # 處理Get請(qǐng)求, 也可以在這些方法中調(diào)用其他的方法
        return 'GET請(qǐng)求' + name
    def post(self):
        # 處理post請(qǐng)求, 也可以在這些方法中調(diào)用其他的方法
        return 'POST請(qǐng)求'

# app.add_url_rule('/test02/', view_func=TestMethodView.as_view('testMethodView'))
method02 = TestMethodView.as_view('testMethodView02');
app.add_url_rule('/test02/
            
              /', view_func=method02, methods=['GET'])
method03 = TestMethodView.as_view('testMethodView03')
app.add_url_rule('/test03/', view_func=method03, methods=['POST'])

print(app.url_map)

if __name__ == '__main__':
    app.run(debug=True)

            
          
        

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 91精品国产乱码久久久久久久久 | 国产精品免费一级在线观看 | 成人午夜电影在线播放网站 | 色欧美色| 蜜桃视频一区二区三区 | 精品久久洲久久久久护士免费 | 91青青草视频在线观看 | 免费视频二区 | 国产免国产免费 | 亚洲精品成人av | 一区二区三区视频在线 | 国产精品久久久久影院色老大 | 精品精品国产高清a毛片 | 一级黄色毛片视频 | 日本黄色免费网址 | 99热成人在线| 国产区精品在线 | 国产精品99久久 | 亚洲娇小性xxxx色 | 高清国产一区二区三区 | 国产福利自产拍在线观看 | 亚洲精品国偷拍自产在线观看 | 一区二区av| 久久综合玖玖爱中文字幕 | 视频一区 精品自拍 | 色婷婷综合久久久中字幕精品久久 | 精品黑人一区二区三区 | 奇米线在人线免费视频 | 在线一级片| 在线不卡一区 | 狠狠操天天操夜夜操 | a级成人毛片久久 | 国产成人自拍视频在线观看 | 欧美日韩手机在线观看 | 欧美日韩在线观看精品 | 国产精品单位女同事在线 | 天天操网 | 国产精品美女久久久 | 欧美视频综合 | 奇米影视首页 | 日本午夜免费无码片三汲大片 |