我有一個非常簡單的工作在Flask中的站點,它們都是由sqlite數據庫提供的。每個頁面作爲一行存儲在頁面表中,該表格包含路徑,標題,內容等內容。Flask中的動態導航
該結構是分層結構,其中頁面可以具有父級。因此,例如,'約'可能是一個頁面,也可能是'關於/某事'和'關於/蛋糕'。因此,我想創建一個導航欄,並鏈接到所有具有「/」父項的鏈接(/是根頁面)。另外,我希望它也顯示已打開的頁面以及該頁面的所有父母。因此,舉例來說,如果我們在'about/cakes/muffins',除了總是顯示的鏈接,我們還會看到鏈接到'about/cakes',以某種方式如下:
- About/
- Cakes/
- Muffins
- Genoise
- Pies/
- Stuff/
- Contact
- Legal
- Etc.[/]
帶有孩子的那些頁面的尾部斜線,沒有那些沒有孩子的頁面。
代碼:
@app.route('/')
def index():
page = query_db('select * from page where path = "/"', one=True)
return render_template('page.html', page=page, bread=[''])
@app.route('/<path>')
def page(path=None):
page = query_db('select * from page where path = "%s"' % path, one=True)
bread = Bread(path)
return render_template('page.html', page=page, crumbs=bread.links)
我已經覺得我違反乾的有有兩種功能。但是做導航會進一步違反它,因爲我也想要導航錯誤頁面之類的東西。
但我似乎無法找到一個特別Flasky的方式來做到這一點。有任何想法嗎?
對不起,我不完全確定你在這裏問什麼 - 怎麼做到底是什麼?您在「頁面」視圖中構建SQL查詢的方式不安全,並且面臨注入式攻擊。看看這裏的一些答案(http://stackoverflow.com/a/775399/1949092),看看如何安全地處理用戶輸入。 – DazWorrall 2013-03-19 14:04:10
是的,這是所有臨時代碼,我知道SQL注入。我在問我如何在Flask中使用動態樹狀導航。我之前在使用mppt的django中完成了此操作,但我沒有在任何地方看到Flask等價物。 – 2013-03-19 14:08:19
我有一個類似的問題,但另外需要導航才能訪問flask.session變量。見https://stackoverflow.com/questions/45948609/accessing-flask-session-variables-from-flask-navigation-for-dynamic-navigation-m – 2017-08-29 21:33:45