【发布时间】:2013-03-08 05:55:50
【问题描述】:
我有一个在 Flask 中工作的非常简单的站点,它全部由 sqlite 数据库提供支持。每个页面在页表中存储为一行,其中包含路径、标题、内容等内容。
结构是分层的,页面可以有父级。因此,例如,虽然“关于”可能是一个页面,但也可能有“关于/某事”和“关于/蛋糕”。所以我想创建一个导航栏,其中包含指向所有具有“/”父级的链接的链接(/ 是根页面)。此外,我希望它还显示打开的页面以及该页面的所有父页面。
因此,例如,如果我们在“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)
我已经觉得我违反了 DRY 有两个功能。但是进行导航会进一步违反它,因为我还希望在错误页面等内容上进行导航。
但我似乎找不到一种特别 Flasky 的方法来做到这一点。有什么想法吗?
【问题讨论】:
-
对不起,我不完全确定你在这里问什么 - 究竟该怎么做?您在“页面”视图中构建 SQL 查询的方式是不安全的,并且容易受到注入攻击。查看here 的一些答案,了解如何安全处理用户输入。
-
是的,都是临时代码,我知道SQL注入。我在问如何在 Flask 中获得动态树导航。我以前在 django 中使用 mppt 做过这个,但我在任何地方都没有看到 Flask 等价物。
-
我有一个类似的问题,但还需要导航才能访问 flask.session 变量。见stackoverflow.com/questions/45948609/…