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

python框架flask入門之路由及簡(jiǎn)單實(shí)現(xiàn)方法

 更新時(shí)間:2020年06月07日 09:32:21   作者:夢(mèng)回故里  
這篇文章主要介紹了python框架flask入門路由及路由簡(jiǎn)單實(shí)現(xiàn)方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

路由

簡(jiǎn)單來說,路由就是一個(gè)url到函數(shù)的映射,通過路由規(guī)則,可以使得url被指定的函數(shù)進(jìn)行處理解析。

我們都知道現(xiàn)在的web系統(tǒng)的URL都是可以自定義的,也就是我們可以指定url和具體的業(yè)務(wù)控制器相關(guān)聯(lián),而這些就是通過路由來實(shí)現(xiàn)的。

flask中集成了路由處理模塊,我們只需要簡(jiǎn)單地使用route裝飾器就可以實(shí)現(xiàn)路由匹配。

@app.route('/')
def index():
 return 'Index Page'

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

上面的例子中,我們?cè)L問瀏覽器的時(shí)候,比如輸入http://127.0.0.1/ 就會(huì)返回'index page',當(dāng)輸入http://127.0.0.1/hello 就會(huì)返回‘Hello World',這就是路由的基本使用。

@app.route('/user/<username>')
def show_user(username):
 return username

@app.route('/post/<int:post_id>')
def show_post(post_id):
 return 'Post %d' % post_id

@app.route('/path/<path:subpath>')
def show_subpath(subpath):
 # show the subpath after /path/
 return 'Subpath %s' % escape(subpath)

從上面的例子我們可以看出,flask的路由還可以進(jìn)行參數(shù)匹配,比如我們可以通過<>來對(duì)參數(shù)進(jìn)行獲取,可以獲取到文章的id,獲取到用戶名等參數(shù)信息,也就是說,我們可以通過路由匹配來對(duì)指定的url進(jìn)行處理。

關(guān)于url中斜線(/)的處理當(dāng)我們?cè)诼酚芍卸x了斜線,那么當(dāng)我們?cè)L問沒有斜線的url的時(shí)候,它會(huì)自動(dòng)添加斜線當(dāng)我們?cè)诼酚芍袥]有定義斜線的時(shí)候,那么我們?cè)L問有斜線的時(shí)候,會(huì)提示404

@app.route('/test/')
#當(dāng)我們?cè)L問http://127.0.0.1/test的時(shí)候,會(huì)重定向到http://127.0.0.1/test/
def test():
  return 'test'

@app.route('slashes')
#當(dāng)我們?cè)L問http://127.0.0.1/slashes/的時(shí)候,會(huì)提示404,無法匹配到路由
def slashes():
 return 'slashes'

下面看下Python Flask框架路由簡(jiǎn)單實(shí)現(xiàn)

  也許你聽說過Flask框架。也許你也使用過,也使用的非常好。但是當(dāng)你在瀏覽器上輸入一串路由地址,跳轉(zhuǎn)至你所寫的頁(yè)面,在Flask中是怎樣實(shí)現(xiàn)的,你是否感到好奇? 如果你不清楚,那就往下看看吧 ~

Flask demo代碼

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
 return '<a href="/home">Hello World!</a>'
@app.route("/home")
def home():
 return "這個(gè)是主頁(yè)"
@app.route("/login")
def login():
 return "這個(gè)是登錄"

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

當(dāng)你在瀏覽器地址上輸入路徑,進(jìn)入不同視圖函數(shù)。

  1.輸入路徑為:"/"

  2.輸入路徑為:"/home"

  3.輸入路徑為:"/login"

是不是很神奇~ 接下來讓我們看看他是如何實(shí)現(xiàn)的吧!

簡(jiǎn)單實(shí)現(xiàn)(廢話不多說,直接上碼?。?/p>

"""
 Flask 路由簡(jiǎn)單實(shí)現(xiàn)
 map: {"/home":"home", "/login":"login", ...}
"""
map = dict()

def route(path):
 def decorator(f):
  print(path, f.__name__, "<-----------start---------->")
  map[path] = f.__name__
  return f
 return decorator


class TestFlaskRoute:

 def __init__(self, path):
  self.path = path

 def find_url(self):
  try:
   getattr(TestFlaskRoute, map.get(self.path)).__call__(self)
  except:
   print("\033[031m 沒有這個(gè)路徑! \033[0m ")

 @route("/login")
 def login(self, *args, **kwargs):
  print("\033[036m 這個(gè)是登錄! \033[0m")
  pass

 @route("/home")
 def home(self, *args, **kwargs):
  print("\033[036m 這個(gè)是主頁(yè)! \033[0m")
  pass

 @route("/")
 def index(self, *args, **kwargs):
  print("\033[036m Hello World! \033[0m")
  pass

 @route("/call")
 def phone(self, *args, **kwargs):
  print("\033[036m 這個(gè)是", self.path, "! \033[0m")
  pass

if __name__ == '__main__':
 while True:
  url = input("請(qǐng)輸入U(xiǎn)RL路徑:")
  app = TestFlaskRoute(url)
  app.find_url()

  在這里我們用模擬瀏覽器輸入方式來完成,當(dāng)我們輸入"/",它會(huì)去找對(duì)應(yīng)路徑下index() 執(zhí)行 ; 輸入"/home",它會(huì)去找對(duì)應(yīng)路徑下home() 執(zhí)行;輸入"/login",它會(huì)去找對(duì)應(yīng)路徑下 login() 執(zhí)行,怎樣是不是很神奇,是不是很像Flask。其實(shí)Flask就是這樣的思路實(shí)現(xiàn)的。

效果:

解析實(shí)現(xiàn)(3步)

  a.當(dāng)程序啟動(dòng)時(shí),先執(zhí)行了route()這個(gè)裝飾器,拿到了所有路徑、對(duì)應(yīng)函數(shù)并將它們存在map這個(gè)字典中,以路徑為key,對(duì)應(yīng)函數(shù)名為value。(注:在Flask是以Route類來存這些信息的哦,所以還是有些區(qū)別的~)

  b.當(dāng)你輸入路徑或者在瀏覽器上輸入路徑,會(huì)以key的形式到map字典中匹配,取出value(函數(shù)名)。

  c.得到value通過getattr()得到函數(shù)地址,然后用內(nèi)置__call__()方法,執(zhí)行這個(gè)函數(shù)

總結(jié)

到此這篇關(guān)于python框架flask入門之路由及簡(jiǎn)單實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)python框架flask 路由內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python進(jìn)行文件處理的示例詳解

    Python進(jìn)行文件處理的示例詳解

    這篇文章主要通過幾個(gè)簡(jiǎn)單的示例,為大家詳細(xì)介紹一下Python實(shí)現(xiàn)文件處理的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-02-02
  • 使用Python初始化多維列表遇到的問題詳解

    使用Python初始化多維列表遇到的問題詳解

    這篇文章主要介紹了使用Python初始化多維列表遇到的問題詳解,二維列表是將其他列表作為它的元素的列表,前一章介紹了如何使用一個(gè)列表來存儲(chǔ)線性的元素集合,可以使用列表來存儲(chǔ)二維數(shù)據(jù),需要的朋友可以參考下
    2023-11-11
  • Python將PDF轉(zhuǎn)換為HTML的實(shí)現(xiàn)方法

    Python將PDF轉(zhuǎn)換為HTML的實(shí)現(xiàn)方法

    PDF文件是共享和分發(fā)文檔的常用選擇,但提取和再利用PDF文件中的內(nèi)容可能會(huì)非常麻煩,本文重點(diǎn)介紹如何在Python程序中將PDF轉(zhuǎn)換為HTML,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2024-03-03
  • pygame游戲之旅 python和pygame安裝教程

    pygame游戲之旅 python和pygame安裝教程

    這篇文章主要為大家詳細(xì)介紹了pygame游戲之旅,分享python和pygame的安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • python模擬預(yù)測(cè)一下新型冠狀病毒肺炎的數(shù)據(jù)

    python模擬預(yù)測(cè)一下新型冠狀病毒肺炎的數(shù)據(jù)

    這篇文章主要介紹了python模擬預(yù)測(cè)一下新型冠狀病毒肺炎的數(shù)據(jù) ,需要的朋友可以參考下
    2020-02-02
  • Python 識(shí)別12306圖片驗(yàn)證碼物品的實(shí)現(xiàn)示例

    Python 識(shí)別12306圖片驗(yàn)證碼物品的實(shí)現(xiàn)示例

    這篇文章主要介紹了Python 識(shí)別12306圖片驗(yàn)證碼物品的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Python去除字符串中某個(gè)字符的多種實(shí)現(xiàn)方法

    Python去除字符串中某個(gè)字符的多種實(shí)現(xiàn)方法

    這篇文章主要介紹了Python去除字符串中某個(gè)字符的多種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python?面向?qū)ο笾甤lass和封裝

    python?面向?qū)ο笾甤lass和封裝

    這篇文章主要為大家介紹了python?class和封裝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Pycharm使用時(shí)會(huì)出現(xiàn)的問題之cv2無法安裝解決

    Pycharm使用時(shí)會(huì)出現(xiàn)的問題之cv2無法安裝解決

    這篇文章主要介紹了Pycharm使用時(shí)會(huì)出現(xiàn)的問題之cv2無法安裝解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Python入門教程(二)Python快速上手

    Python入門教程(二)Python快速上手

    這篇文章主要介紹了Python入門教程(二)Python快速上手,Python是一門非常強(qiáng)大好用的語(yǔ)言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04

最新評(píng)論

拉萨市| 文水县| 吴江市| 航空| 黔西| 崇阳县| 屯留县| 临朐县| 唐山市| 丰城市| 保靖县| 岑巩县| 静安区| 江安县| 葫芦岛市| 永胜县| 米脂县| 清徐县| 农安县| 监利县| 鹿邑县| 沂水县| 分宜县| 乌海市| 邯郸县| 安国市| 磐安县| 宿迁市| 神池县| 马尔康县| 潮州市| 西乡县| 威远县| 双桥区| 普兰县| 永宁县| 龙泉市| 元阳县| 莱西市| 中宁县| 新巴尔虎右旗|