亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

flask框架自定義url轉換器操作詳解

發布時間:2020-09-01 20:49:04 來源:腳本之家 閱讀:133 作者:stu_xujin 欄目:開發技術

本文實例講述了flask框架自定義url轉換器。分享給大家供大家參考,具體如下:

什么是url轉換器

可以指定url的規制,對url做一定的限制。

自帶的url轉換器

可以參考我的上一篇博客: flask–url與重定向詳解

自定義url轉換器

首先我們提一個需求,根據需求來寫代碼,現在我們假設一個url需要滿足電話號碼的格式才能訪問我們的函數視圖,例如這樣的url: 127.0.0.1:5000/user/<電話號碼>/.

# 首先導入BaseConverter
from werkzeug.routing import BaseConverter
from flask import Flask
app = Flask(__name__)
# 然后我們寫一個類,需要繼承BaseConverter這個類
class TelphoneConverter(BaseConverter):
 # 然后將我們url的規則寫到regex這個屬性上,必須為regex,正則表達式
 # 以1開始,第二位數只能是3458中的一個,然后后面隨便跟9個數字
 regex = '1[3458]\d{9}'
# 然后我們需要注冊我們自定義的轉換器
# 'tel': 為我們給這個轉換器取的名字,我們使用的時候就會使用這個名字
# 'TelephoneConverter': 為'tel'這個轉換器對應的類,也就是我們上面寫的類,當我們使用'tel'時,就會去使用這個類中的regex屬性
app.url_map.converters['tel'] = TelephoneConverter
# 然后使用我們的tel轉換器
@app.route('/user/<tel:telephone>')
def tel_demo(telephone):
 return "你的電話號碼是:%s" % telephone

然后我們就可以輸入網址測試了,如果我們輸入的規則不滿足我們寫的正則表達式的話,就會出現404頁面。

在上面的tel轉換器中,我們只是寫了規則,我們還可以對url進行一些自定義的處理,然后再傳給我們的視圖函數.

這個時候就會使用到我們的to_python和to_url方法了

需求:當輸入的url為127.0.0.1/a+b/這樣的時候,我們想在視圖函數中拿到的時候就直接是一個列表['a','b'],而不用我們每次都去自己轉換。而當我們使用url_for闖入參數的時候,我們直接傳入['a','b'],也能直接給我們變成a+b這種形式。

代碼如下:

from flask import Flask
from flask import url_for
from werkzeug.routing import BaseConverter
class ListConverter(BaseConverter):
 # 重寫to_python方法,value就是url傳入的參數,也就是我們url中傳入的參數會經過這個方法處理之后,
 # 然后再返回給我們的視圖函數,也就是我們在視圖函數中拿到的值是經過這個函數處理過后的值
 def to_python(self,value):
 return value.split('+')
 # 重寫to_url方法,value就是我們在使用url_for的時候傳入的參數,也就是說我們傳入的參數會經過這個方法的處理,再變成url
 def to_url(self,value):
 return "+".join(value)
# 然后我們還是要注冊我們的轉換器
app.url_map.converters['list'] = ListConverter
# 然后編寫一個視圖來測試
@app.route('/index/')
def index():
 return url_for('board',boards=['a','b'])
@app.route('/<list:boards>/')
def demo(boards):
 print(boards)
 return 'boards is ' + str(boards)

然后啟動項目,當我們訪問127.0.0.1:5000/index/的時候,我們就能看到/a+b/,這個就是to_url函數起作用了。而當我們在瀏覽中輸入127.0.01:5000/a+b/,就能看到了一個列表。這也就是我們的to_python起作用了。

總結:

  • 自定義url轉換器需要繼承自BaseConverter這個類
  • url的規則需要重寫regex這個屬性(寫正則表達式)
  • to_python方法是在url中的參數傳入視圖函數之前,會對參數進行處理
  • to_url方法在使用url_for的時候,會對傳入的參數進行處理,再轉化為url
  • 最后,一定要將自定義的url轉換器添加至app.url_map.converters中

希望本文所述對大家基于flask框架的Python程序設計有所幫助。

向AI問一下細節

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

AI

获嘉县| 历史| 遂昌县| 盐山县| 大宁县| 于都县| 太康县| 邳州市| 扎赉特旗| 鄯善县| 遂宁市| 永修县| 泊头市| 虹口区| 玛曲县| 邓州市| 潞城市| 咸宁市| 砚山县| 宁化县| 米脂县| 手游| 怀来县| 龙泉市| 麻栗坡县| 沙雅县| 方山县| 开封市| 固始县| 平潭县| 东丰县| 桂东县| 枣阳市| 内乡县| 怀化市| 清水河县| 佛学| 江西省| 饶阳县| 辰溪县| 连山|