我有一個用 Python3.6.x 撰寫的燒瓶應用程式,它位于 docker 中。
當我讓后端的docker容器啟動并運行時,我可以執行FLASK_APP='run.py' 燒瓶路由來獲取 shell 中應用程式中所有端點的串列。
我應該進行哪些更改才能將整個串列作為 web/html 頁面?
uj5u.com熱心網友回復:
我應該進行哪些更改才能將整個串列作為 web/html 頁面?
我猜您希望flask routes在您自己的路線中提供可用的輸出,因此您可以通過將其傳遞給模板或其他東西來渲染它......
查看flask routes命令的實作位置以及如何獲取資料...
def routes_command(sort: str, all_methods: bool) -> None:
"""Show all registered routes with endpoints and methods."""
rules = list(current_app.url_map.iter_rules())
if not rules:
click.echo("No routes were registered.")
return
因此,要在您自己的程式中實作這一點,您可以這樣做:
from flask import Flask, current_app
app = Flask(__name__)
# Just another demonstration route for the output.
@app.route('/some/route/<withParam>')
def some_route(withParam): return 'success'
@app.route('/')
def index():
rules = list(current_app.url_map.iter_rules())
if not rules:
return 'No rules defined'
def get_dict(rule):
return { 'endpoint': rule.endpoint,
'methods': ','.join(rule.methods),
'rule': rule.rule }
output_list = [get_dict(r) for r in rules]
print (output_list)
return 'success'
output_list 是一個字典串列,如下所示:
[{'endpoint': 'index',
'methods': 'GET,HEAD,OPTIONS',
'rule': '/'},
{'endpoint': 'some_route',
'methods': 'GET,HEAD,OPTIONS',
'rule': '/some/route/<withParam>'},
{'endpoint': 'static',
'methods': 'GET,HEAD,OPTIONS',
'rule': '/static/<path:filename>'}]
顯然,在上面的示例中,我剛剛將它列印到終端,但是現在你已經在 python 資料結構中擁有它,很容易通過render_template它傳遞并在頁面中顯示它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/405692.html
標籤:
