对一些静态页面使用flask/blueprint

2024-10-04 11:29:17 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我只是有点困惑,如何用flask构建页面而不必声明每个视图。在

我该如何制作一个蓝图,在我想要加载的页面上出现?在

假设这些是我的示例页

templates/
   layout.html
   section1/
     subsection/index.html
     subsection2/index.html
   section2
     subsection/index.html
       childofsubsection/index.html

我想如果我去的话example.com/section1/subsection/它将知道查找相应的页面,而不必特别声明它。文档http://flask.pocoo.org/docs/blueprints/非常接近于解释这一点,但我仍然有点迷茫。在

^{pr2}$

还有,不知道这应该去哪里?这看起来像是在应用程序.py,但要求从“yourapplication”导入

对flask来说非常陌生,也不是python专家。真的需要冷静一下:)


Tags: 视图声明flask示例indexexamplehtml页面
1条回答
网友
1楼 · 发布于 2024-10-04 11:29:17

如果您想看看Blueprint用法的示例,可以看看this answer。在

关于问题中的“模板自动查找”部分:如文档所述,blueprints允许指定查找静态文件和/或模板的文件夹,这样您就不必在render_template()调用中指定模板文件的完整路径,而只需指定文件名。在

如果你想让你的视图“神奇地”知道他们应该选择哪一个文件,你必须做一些修改。例如,一个解决方案可以是在视图上应用一个decorator,使它根据函数名选择模板文件,这样的decorator如下所示:

from functools import wraps
from flask import render_template

def autorender(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        context = func(*args, **kwargs)
        return render_template('%s.html' % func.func_name, **context)
    return wrapper

然后您只需将视图中的上下文作为dict返回(如果没有上下文,则返回空dict):

^{pr2}$

它会自动选择名为index.html的模板。在

相关问题 更多 >