flask 騷操作清單(進階黑魔法級)

更新 發佈閱讀 7 分鐘

🚀 騷操作清單(進階黑魔法級)

1. 自定義 route 裝飾器,讓路由語法更優雅

python
複製編輯# 超騷:讓 route 看起來像函式呼叫
def route(path, **options):
def decorator(f):
app.add_url_rule(path, f.__name__, f, **options)
return f
return decorator

@route('/sao')
def sao_page():
return '真的騷'

2. before_request 偷偷改變 request 路由

python
複製編輯@app.before_request
def redirect_secret():
if request.path == "/admin":
# 黑魔法:偷偷把訪問 /admin 導去 /notadmin
request.environ['PATH_INFO'] = "/notadmin"

@app.route('/notadmin')
def secret():
return "其實你進來的是 /notadmin"

3. Flask 的 g 對象偷渡資料(共享狀態)

python
複製編輯@app.before_request
def inject_data():
g.sao_value = "沒人知道的騷操作"

@app.route('/get_sao')
def get_sao():
return g.sao_value

👉 很多人沒用過 g,但這其實是全域請求上下文變數,可以傳遞資料但只活在這次 request。


4. 返回任意物件,Flask 幫你自動處理

python
複製編輯class SuperSao:
def __str__(self):
return "我是物件不是字串"

@app.route('/weird')
def weird():
return SuperSao() # Flask 會自動 str()

# 更進階:可以實作 __html__ 或 __call__ 來參與渲染

5. .py 當模板引擎使用(超極限)

python
複製編輯@app.route('/pytemplate')
def pytemplate():
code = """
name = '小明'
html = f"<h1>Hello {name}</h1>"
"""
loc = {}
exec(code, {}, loc)
return loc['html']

⚠️ 這是黑魔法 + 安全地獄,但真的超級騷。


6. 自定義 Response 類,做出奇怪格式回應

python
複製編輯from flask import Response

@app.route('/raw')
def raw():
return Response("這是原始字串喔", content_type='text/plain; charset=utf-8')

7. 用 Flask 做 TCP 或 Unix socket 通訊(跳脫 HTTP)

python
複製編輯# 使用 gunicorn 搭配 unix socket:
# gunicorn -b unix:/tmp/flask.sock app:app

🧠 用 Flask 配合 socket 寫 IPC 通訊,搞出非 Web 用法也很騷。


8. 在 URL 裡使用正則,定義奇怪的路由規則

python
複製編輯from werkzeug.routing import BaseConverter

class RegexConverter(BaseConverter):
def __init__(self, map, *items):
super().__init__(map)
self.regex = items[0]

app.url_map.converters['re'] = RegexConverter

@app.route('/id/<re("[0-9]{4}"):id>')
def regex_demo(id):
return f"你輸入了四位數 ID:{id}"

9. 讓 Flask 伺服器自己重啟(像病毒一樣)

python
複製編輯import os, sys

@app.route('/restart')
def restart():
os.execl(sys.executable, sys.executable, *sys.argv)

🛑 真的會重啟伺服器,用來做開發期自我熱重載(極限情況)。


10. 用裝飾器定義多語系自動回應

python
複製編輯from functools import wraps

def multilingual(func):
@wraps(func)
def wrapper(*args, **kwargs):
lang = request.args.get('lang', 'en')
if lang == 'zh':
return "你好,世界!"
return func(*args, **kwargs)
return wrapper

@app.route('/greet')
@multilingual
def greet():
return "Hello, World!"
留言
avatar-img
于正龍(Ricky)的沙龍
57會員
93內容數
人工智能工作經驗跟研究
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
看完上篇 4 位新成員的靈魂拷問,是不是意猶未盡?別急,野格團新血的驚喜正接著登場!今天下篇接力的另外 4 位「個人主題專家」,戰力同樣驚人──領域從旅行美食、運動、商業投資到自我成長;這些人如何維持長跑般的創作動力?在爆紅的文章背後,又藏著哪些不為人知的洞察?5 大靈魂拷問繼續出擊
Thumbnail
看完上篇 4 位新成員的靈魂拷問,是不是意猶未盡?別急,野格團新血的驚喜正接著登場!今天下篇接力的另外 4 位「個人主題專家」,戰力同樣驚人──領域從旅行美食、運動、商業投資到自我成長;這些人如何維持長跑般的創作動力?在爆紅的文章背後,又藏著哪些不為人知的洞察?5 大靈魂拷問繼續出擊
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
Function的使用方式
Thumbnail
Function的使用方式
Thumbnail
這次要講的是 $route 及 $router 的區別,看似相似的兩個東西,其實應用時機也大不相同,以下以簡單的幾個例子舉例。
Thumbnail
這次要講的是 $route 及 $router 的區別,看似相似的兩個東西,其實應用時機也大不相同,以下以簡單的幾個例子舉例。
Thumbnail
2023 Vue直播班筆記 - 動態路由Props,接續之前的一般動態路由。分為 "寫死" 及 "彈性" 兩種。
Thumbnail
2023 Vue直播班筆記 - 動態路由Props,接續之前的一般動態路由。分為 "寫死" 及 "彈性" 兩種。
Thumbnail
Vue Router 動態路由,假設有一個賣場,裡面有 100 個商品,我們不可能針對它們創 100 對應的路由,因此我們需要一個動態路由,利用"路徑帶參數"的方式來撈取商品的資訊。
Thumbnail
Vue Router 動態路由,假設有一個賣場,裡面有 100 個商品,我們不可能針對它們創 100 對應的路由,因此我們需要一個動態路由,利用"路徑帶參數"的方式來撈取商品的資訊。
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
Thumbnail
當你想讓原本函式新增其他功能,又不想更動原本函式時,Python提供了一種強大而靈活的工具,那就是裝飾器。 但對於新手來說這個裝飾器,非常抽象難以理解,讓我們繼續往下看,慢慢的抽絲剝繭吧。 在 Python 中,使用「@」當做裝飾器使用的語法糖符號
Thumbnail
當你想讓原本函式新增其他功能,又不想更動原本函式時,Python提供了一種強大而靈活的工具,那就是裝飾器。 但對於新手來說這個裝飾器,非常抽象難以理解,讓我們繼續往下看,慢慢的抽絲剝繭吧。 在 Python 中,使用「@」當做裝飾器使用的語法糖符號
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News