国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Flask注冊(cè)視圖函數(shù)

2bdenny / 2918人閱讀

摘要:鍵是函數(shù)名,值是函數(shù)對(duì)象,函數(shù)名也用于生成。注冊(cè)一個(gè)視圖函數(shù),用裝飾器。獲取儲(chǔ)存視圖函數(shù)字典中的函數(shù)對(duì)象視圖函數(shù)類中的字典儲(chǔ)存了注冊(cè)的視圖函數(shù)名和視圖函數(shù)對(duì)象。輸出視圖函數(shù)視圖函數(shù)名重復(fù)修改解決

那天莫名其妙出了個(gè)錯(cuò)。。就順便看了看Flask路由

在flask存儲(chǔ)路由函數(shù)是以函數(shù)名為鍵,函數(shù)對(duì)象為值

class Flask:
    def __init__(self, *args, **kwargs):
        #所有視圖函數(shù)的注冊(cè)將被放在字典。鍵是函數(shù)名,值是函數(shù)對(duì)象,函數(shù)名也用于生成URL。注冊(cè)一個(gè)視圖函數(shù),用route裝飾器。
        self.view_functions= {}

app.route裝飾器注冊(cè)視圖函數(shù)

def route(self, rule, **options):
    #用來(lái)給給定的URL注冊(cè)視圖函數(shù)的裝飾器,也可以用add_url_rule函數(shù)來(lái)注冊(cè)。endpoint關(guān)鍵字參數(shù)默認(rèn)是視圖函數(shù)的名字
    def decorator(f):
            endpoint = options.pop("endpoint", None) #pop刪除endpoint的值沒(méi)有為None并返回它賦值給endpoint
            self.add_url_rule(rule, endpoint, f, **options) #調(diào)用add_url_rule函數(shù)
            return f
        return decorator

add_url_rule函數(shù)

def add_url_rule(self, rule, endpoint=None, view_func=None, provide_automatic_options=None, **options):
    if endpoint is None:
            endpoint = _endpoint_from_view_func(view_func) #_endpoint_from_view_fun函數(shù)返回視圖函數(shù)名view_fun.__name__
        options["endpoint"] = endpoint
    #......
    if view_func is not None:
            old_func = self.view_functions.get(endpoint)
            if old_func is not None and old_func != view_func:
                raise AssertionError("View function mapping is overwriting an "
                                     "existing endpoint function: %s" % endpoint) #old_func對(duì)象從儲(chǔ)存視圖函數(shù)的字典中取出,如果它不為空并且不等于視圖函數(shù)那么就會(huì)報(bào)錯(cuò)視圖函數(shù)覆蓋當(dāng)前端點(diǎn)函數(shù),如果有同名函數(shù)可以通過(guò)修改endpoint值來(lái)避免這個(gè)錯(cuò)誤。
            self.view_functions[endpoint] = view_func #函數(shù)名作為鍵,函數(shù)對(duì)象作為值存儲(chǔ)到view_functions中。   

獲取儲(chǔ)存視圖函數(shù)字典中的函數(shù)對(duì)象

from flask import Flask

app = FLask(__name__)

@app.route("/")
def index():
    return "

視圖函數(shù):{} /endpoint:{}

".format(app.view_functions.get("index","None").__name__, app.view_functions.keys()) #FLask類中的view_functions字典儲(chǔ)存了注冊(cè)的視圖函數(shù)名和視圖函數(shù)對(duì)象。函數(shù)名為endpoint默認(rèn)就是視圖函數(shù)的名字,get方法獲得視圖函數(shù)對(duì)象,__name__過(guò)的函數(shù)名。這個(gè)字典的鍵就是endponit的值。 輸出: endpoint:dict_keys(["static", "index"])/視圖函數(shù):index

如果自定義endponit = "hello"

@app.route("/", endpoint="hello")
def index():
    return "

endpoint:{}/視圖函數(shù):{}

".format(app.view_functions.keys(), app.view_functions.get("hello","None").__name__) #字典鍵值就是endponit值改為自定義的值來(lái)獲取試圖函數(shù)對(duì)象。 輸出: endpoint:dict_keys(["static", "hello"])/視圖函數(shù):index

視圖函數(shù)名重復(fù)

@app.route("/s/")
def a():
    return "helloooo"

@app.route("/ss/")
def a():
    return "ahahaha" 
#AssertionError: View function mapping is overwriting an existing endpoint function: a

修改endpoint解決

@app.route("/s/", endpoint="h")
def a():
    return "helloooo"

@app.route("/ss/")
def a():
    return "ahahaha"


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/43691.html

相關(guān)文章

  • Flask Web 開(kāi)發(fā)實(shí)戰(zhàn)筆記

    摘要:開(kāi)發(fā)實(shí)戰(zhàn)筆記安裝和使用虛擬環(huán)境虛擬環(huán)境是解釋器的一個(gè)私有副本,在這個(gè)環(huán)境中你可以安裝私有的包,而且不會(huì)影響系統(tǒng)中安裝的全局的解釋器。處理和函數(shù)之間關(guān)系的程序稱為路由。例如在請(qǐng)求開(kāi)始時(shí),我們需要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)連接或認(rèn)證發(fā)起請(qǐng)求的用戶。 幾天前和同事一起喝酒,大家談到為什么開(kāi)始讀書(shū)這件事。這里所說(shuō)的讀書(shū)不是專業(yè)的書(shū)籍,而是一些閑書(shū)。結(jié)果發(fā)現(xiàn)原來(lái)我們開(kāi)始讀書(shū)的原因很功利。都是因?yàn)樯钪杏龅搅死?..

    羅志環(huán) 評(píng)論0 收藏0
  • [貳]Flask web開(kāi)發(fā):程序的基本結(jié)構(gòu)

    摘要:本篇對(duì)應(yīng)書(shū)本第二章程序的基本結(jié)構(gòu)。初始化導(dǎo)入模塊創(chuàng)建類的實(shí)例注對(duì)于開(kāi)發(fā)者來(lái)說(shuō),傳給應(yīng)用程序構(gòu)造函數(shù)的參數(shù)是比較容易弄混淆的。不同的請(qǐng)求方法發(fā)送到相同的上時(shí),會(huì)使用不同的視圖函數(shù)進(jìn)行處理。 本系列筆記是我閱讀Miguel Grinberg的《Flask Web Development》的筆記,標(biāo)題與書(shū)本同步。希望通過(guò)記錄技術(shù)筆記的方式促進(jìn)自己對(duì)知識(shí)的理解。 本篇對(duì)應(yīng)書(shū)本第二章:程序的基本...

    maxmin 評(píng)論0 收藏0
  • Flask Web Development —— 基本應(yīng)用程序結(jié)構(gòu)(下)

    摘要:有兩類應(yīng)用級(jí)和請(qǐng)求級(jí)。一個(gè)響應(yīng)中非常重要的部分是狀態(tài)碼,默認(rèn)設(shè)置來(lái)指示請(qǐng)求已經(jīng)成功處理。重定向通常由響應(yīng)狀態(tài)碼注明并且重定向的由頭部的給出。因?yàn)檫@些變化,應(yīng)用程序獲得一組基本的命令行選項(xiàng)。運(yùn)行顯示可用信息在應(yīng)用程序上下文的內(nèi)部運(yùn)行一個(gè)。 5、請(qǐng)求-響應(yīng)循環(huán) 現(xiàn)在你已經(jīng)玩過(guò)一個(gè)基本的Flask應(yīng)用程序,你也許想要知道更多關(guān)于Flask如何施展魔力。下面章節(jié)描述了一些框架設(shè)計(jì)方面的特點(diǎn)。...

    caohaoyu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<