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

flask框架自定義url轉(zhuǎn)換器操作詳解

 更新時間:2020年01月25日 11:24:43   作者:stu_xujin  
這篇文章主要介紹了flask框架自定義url轉(zhuǎn)換器操作,結(jié)合實例形式分析了URL轉(zhuǎn)換器的相關(guān)原理、實現(xiàn)方法與操作注意事項,需要的朋友可以參考下

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

什么是url轉(zhuǎn)換器

可以指定url的規(guī)制,對url做一定的限制。

自帶的url轉(zhuǎn)換器

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

自定義url轉(zhuǎn)換器

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

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

然后我們就可以輸入網(wǎng)址測試了,如果我們輸入的規(guī)則不滿足我們寫的正則表達式的話,就會出現(xiàn)404頁面。

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

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

需求:當輸入的url為127.0.0.1/a+b/這樣的時候,我們想在視圖函數(shù)中拿到的時候就直接是一個列表['a','b'],而不用我們每次都去自己轉(zhuǎn)換。而當我們使用url_for闖入?yún)?shù)的時候,我們直接傳入['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傳入的參數(shù),也就是我們url中傳入的參數(shù)會經(jīng)過這個方法處理之后,
 # 然后再返回給我們的視圖函數(shù),也就是我們在視圖函數(shù)中拿到的值是經(jīng)過這個函數(shù)處理過后的值
 def to_python(self,value):
 return value.split('+')
 # 重寫to_url方法,value就是我們在使用url_for的時候傳入的參數(shù),也就是說我們傳入的參數(shù)會經(jīng)過這個方法的處理,再變成url
 def to_url(self,value):
 return "+".join(value)
# 然后我們還是要注冊我們的轉(zhuǎn)換器
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函數(shù)起作用了。而當我們在瀏覽中輸入127.0.01:5000/a+b/,就能看到了一個列表。這也就是我們的to_python起作用了。

總結(jié):

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

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

相關(guān)文章

  • 多線程python的實現(xiàn)及多線程有序性

    多線程python的實現(xiàn)及多線程有序性

    這篇文章主要介紹了多線程python的實現(xiàn)及多線程有序性,多線程一般用于同時調(diào)用多個函數(shù),cpu時間片輪流分配給多個任務(wù)
    2022-06-06
  • python中返回矩陣的行列方法

    python中返回矩陣的行列方法

    下面小編就為大家分享一篇python中返回矩陣的行列方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Pytorch如何切換 cpu和gpu的使用詳解

    Pytorch如何切換 cpu和gpu的使用詳解

    這篇文章主要介紹了Pytorch如何切換 cpu和gpu的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2021-03-03
  • django如何設(shè)置csrf_token

    django如何設(shè)置csrf_token

    這篇文章主要介紹了django如何設(shè)置csrf_token問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python讀取目錄下最新的文件夾方法

    python讀取目錄下最新的文件夾方法

    今天小編就為大家分享一篇python讀取目錄下最新的文件夾方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python?ArcPy批量掩膜、重采樣大量遙感影像的操作

    Python?ArcPy批量掩膜、重采樣大量遙感影像的操作

    這篇文章主要介紹了Python?ArcPy批量掩膜、重采樣大量遙感影像,本文介紹基于Python中ArcPy模塊,對大量柵格遙感影像文件進行批量掩膜與批量重采樣的操作,需要的朋友可以參考下
    2023-03-03
  • python按比例隨機切分數(shù)據(jù)的實現(xiàn)

    python按比例隨機切分數(shù)據(jù)的實現(xiàn)

    這篇文章主要介紹了python按比例隨機切分數(shù)據(jù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-07-07
  • tensorflow實現(xiàn)簡單的卷積網(wǎng)絡(luò)

    tensorflow實現(xiàn)簡單的卷積網(wǎng)絡(luò)

    這篇文章主要為大家詳細介紹了tensorflow實現(xiàn)簡單的卷積網(wǎng)絡(luò),使用的數(shù)據(jù)集是MNIST,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 用python基于appium模塊開發(fā)一個自動收取能量的小助手

    用python基于appium模塊開發(fā)一個自動收取能量的小助手

    大家都有了解過螞蟻森林吧,本篇文章帶給你自動收取螞蟻森林能量的思路與方法,基于appium模塊開發(fā)一個自動收取能量的小助手,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的價值
    2021-09-09
  • 深入了解python高階函數(shù)編寫與使用

    深入了解python高階函數(shù)編寫與使用

    這篇文章主要為大家介紹了python高階函數(shù)編寫與使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>
    2021-11-11

最新評論

互助| 丰城市| 榕江县| 永定县| 万载县| 紫阳县| 红安县| 柳江县| 泉州市| 铁力市| 同心县| 高要市| 招远市| 垦利县| 东至县| 洪湖市| 积石山| 陕西省| 酒泉市| 肇州县| 准格尔旗| 平远县| 崇礼县| 衡阳市| 赣州市| 宕昌县| 调兵山市| 宁阳县| 乌鲁木齐市| 江北区| 察隅县| 景宁| 常德市| 南岸区| 麻江县| 长阳| 普格县| 桃江县| 郁南县| 沙坪坝区| 天长市|