91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python框架flask的路由及其簡單實現方式

發布時間:2020-07-21 11:35:40 來源:億速云 閱讀:332 作者:小豬 欄目:開發技術

這篇文章主要講解了python框架flask的路由及其簡單實現方式,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

路由

簡單來說,路由就是一個url到函數的映射,通過路由規則,可以使得url被指定的函數進行處理解析。

我們都知道現在的web系統的URL都是可以自定義的,也就是我們可以指定url和具體的業務控制器相關聯,而這些就是通過路由來實現的。

flask中集成了路由處理模塊,我們只需要簡單地使用route裝飾器就可以實現路由匹配。

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

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

上面的例子中,我們訪問瀏覽器的時候,比如輸入http://127.0.0.1/ 就會返回'index page',當輸入http://127.0.0.1/hello 就會返回‘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的路由還可以進行參數匹配,比如我們可以通過<>來對參數進行獲取,可以獲取到文章的id,獲取到用戶名等參數信息,也就是說,我們可以通過路由匹配來對指定的url進行處理。

關于url中斜線(/)的處理當我們在路由中定義了斜線,那么當我們訪問沒有斜線的url的時候,它會自動添加斜線當我們在路由中沒有定義斜線的時候,那么我們訪問有斜線的時候,會提示404

@app.route('/test/')
#當我們訪問http://127.0.0.1/test的時候,會重定向到http://127.0.0.1/test/
def test():
  return 'test'

@app.route('slashes')
#當我們訪問http://127.0.0.1/slashes/的時候,會提示404,無法匹配到路由
def slashes():
 return 'slashes'

下面看下Python Flask框架路由簡單實現

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

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 "這個是主頁"
@app.route("/login")
def login():
 return "這個是登錄"

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

當你在瀏覽器地址上輸入路徑,進入不同視圖函數。

  1.輸入路徑為:"/"

python框架flask的路由及其簡單實現方式

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

python框架flask的路由及其簡單實現方式

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

python框架flask的路由及其簡單實現方式

是不是很神奇~ 接下來讓我們看看他是如何實現的吧!

簡單實現(廢話不多說,直接上碼!)

"""
 Flask 路由簡單實現
 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 沒有這個路徑! \033[0m ")

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

 @route("/home")
 def home(self, *args, **kwargs):
  print("\033[036m 這個是主頁! \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 這個是", self.path, "! \033[0m")
  pass

if __name__ == '__main__':
 while True:
  url = input("請輸入URL路徑:")
  app = TestFlaskRoute(url)
  app.find_url()

  在這里我們用模擬瀏覽器輸入方式來完成,當我們輸入"/",它會去找對應路徑下index() 執行 ; 輸入"/home",它會去找對應路徑下home() 執行;輸入"/login",它會去找對應路徑下 login() 執行,怎樣是不是很神奇,是不是很像Flask。其實Flask就是這樣的思路實現的。

效果:

python框架flask的路由及其簡單實現方式

解析實現(3步)

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

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

  c.得到value通過getattr()得到函數地址,然后用內置__call__()方法,執行這個函數

看完上述內容,是不是對python框架flask的路由及其簡單實現方式有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大荔县| 鹤峰县| 南召县| 定兴县| 颍上县| 安溪县| 镶黄旗| 金山区| 德兴市| 平阴县| 开平市| 五莲县| 大埔区| 石泉县| 洮南市| 运城市| 湛江市| 吕梁市| 若尔盖县| 五河县| 金秀| 永吉县| 洪江市| 南宫市| 云和县| 永顺县| 宁强县| 沙雅县| 邮箱| 图木舒克市| 延庆县| 吴桥县| 临猗县| 木兰县| 临西县| 云林县| 黔西县| 新郑市| 盘锦市| 西乡县| 襄城县|