一个模块,它试图直接从url加载相应的模板,而无需为每个url编写视图。
canonicalwebteam.templatefinder的Python项目详细描述
模板查找器
TemplateFinder
是TemplateView
的扩展,它试图
直接从url加载相应的模板,无需
为每个url编写一个视图。
它可以直接加载html模板,或者解析 包含“包装模板”FrontMatter密钥。
用法
要在Flask应用程序中注册模板查找器,需要在应用程序配置中注册模板文件夹,并指定应由其处理的路由。 下面的示例将通过templatefinder处理所有内容:
from canonicalwebteam.templatefinder import TemplateFinder
TEMPLATE_FOLDER =
app = Flask(
template_folder="templates",
static_folder="static",
)
app.config["TEMPLATE_FOLDER"] = "templates"
template_finder_view = TemplateFinder.as_view("template_finder")
app.add_url_rule("/", view_fun c=template_finder_view)
app.add_url_rule("/<path:subpath>", view_func=template_finder_view)
模板匹配
templatefinder可用于自动将.html
和.md
文件映射到网站上的url。
包含后,finder将在指定模板目录中的给定url处搜索文件。
例如,localhost/pages/test
将按顺序查找以下文件:
$TEMPLATE_FOLDER/pages/test.html
$TEMPLATE_FOLDER/pages/test/index.html
$TEMPLATE_FOLDER/pages/test.md
$TEMPLATE_FOLDER/pages/test/index.md
标记解析
如果TemplateFinder
遇到标记文件(结束于.md
),则
将在YAML
frontmatter中查找以下键:
wrapper_template
强制:(例如:wrapper_template: includes/markdown-wrapper.html
)指向 用于放置已分析标记内容的HTML模板。 此路径必须与烧瓶的template_folder
根相对context
可选:(例如:context: {title: "Welcome", description: "A welcome page"}
)一个 要传递到的额外键/值对字典 模板上下文。markdown_includes
可选:(例如:markdown_includes: {nav: }
) 键名到指向标记文件的模板路径的映射 包括在内。将分析每个模板路径,生成的html 将在模板上下文中的相关键下传递。 路径必须相对于烧瓶的template_folder
根。
下面是一个标记文件示例:
--- wrapper_template: "includes/markdown-wrapper.html" markdown_includes: nav: "includes/nav.md" context: title: "Welcome" description: "A welcome page" --- Welcome to my website. ## GitHub I also have [a GitHub page](https://github.com/me).
测试
可以使用pytest运行测试:
pip3 install -r requirements.txt
python3 -m pytest test