与Armstrong相关的布局代码
项目描述
为Armstrong和Django项目提供布局和模板功能。arm_layout 提供工具,有助于简化内容显示,擅长渲染标准化的、模型特定的模板,这些模板易于共享或覆盖,既可以非常通用,也可以非常具体。在您的模板中渲染模型对象,无需担心对象的特定性或视图逻辑。
用法
速查表
{% load layout_helpers %} {% render_model model_obj "template_name" %} <!-- otherwise render_model behaves exactly like {% include ... %} --> {% render_model model_obj "template_name" with additional="data" %} {% render_model model_obj "template_name" with isolated="context" only %} <!-- shortcut to call render_model on a list of model objects --> {% render_list list_of_models "template_name" %} <!-- or more flexible looping --> {% render_iter list_of_models %} {% render_next "big" %} {% render_next "small" %} {% render_next "big" %} {% render_remainder "small" %} {% endrender_iter %}
深入
要加载模板标签,请添加以下行(通常在模板顶部):
{% load layout_helpers %}
现在您可以使用 render_model 模板标签以这种方式显示给定的模型:
{% render_model some_model "full_page" %}
some_model 是模板中的一个变量,它是一个模型实例,字符串 "full_page" 是您“布局”的名称。 render_model 会查找名为 layout/<app_label>/<model>/<layout>.html 的模板来确定用于显示模型实例的内容。更进一步,它足够智能,可以遍历模型的继承关系,以确定是否有可以使用的父模型布局。例如,如果 some_model 是 armstrong.apps.articles.models.Article 的实例,它继承自 armstrong.apps.content.models.Content,则 render_model 会按以下顺序查找以下模板
["layout/articles/article/full_page.html", "layout/content/content/full_page.html", ]
您可以在 full_page.html 模板中访问整个模板上下文。您还有一个名为 object 的新变量,它代表您提供给 render_model 的模型实例。该变量仅在布局模板中可用,并临时覆盖任何其他名为 object 的上下文变量。除了可以根据模型继承关系查找模板的灵活性之外,此标签的功能与 {% include %} 一样。您可以使用 with extra="param" 添加上下文,或使用 only 隔离上下文。一旦 render_model 完成,它将恢复原始上下文。
layout_helpers 提供了两个其他辅助方法,可以轻松渲染多个模型,而无需手动遍历它们。您可以使用相同的模板渲染整个模型列表
{% render_list list_of_models "preview" %}
或者使用更细粒度的块标签,允许您为每个模型实例指定模板,然后使用公共模板渲染其余部分
{% render_iter list_of_models %} {% render_next "preview" %} {% render_next "preview" %} {% render_next "preview" %} {% render_remainder "headline" %} {% endrender_iter %}
当然,您也可以用另一种方式做到这一点
{% render_list list_of_models[:3] "preview" %} {% render_list list_of_models[3:] "headline" %}
这些循环辅助工具的局限性是它们不能使用 with 或 only 添加或限制上下文,如 render_model 所做的那样。但是,您可以包裹这些标签在一个 {% with need="this" and="that" %} ... {% endwith %} 块中。请参阅 with 文档。
安装 & 配置
支持 Django 1.3、1.4、1.5、1.6、1.7,在 Python 2.6 和 2.7 上。
pip install armstrong.core.arm_layout
将 armstrong.core.arm_layout 添加到您的 INSTALLED_APPS
可选设置:(在 settings.py 中使用,可以省略)
- ARMSTRONG_LAYOUT_BACKEND = "armstrong.core.arm_layout.backends.BasicLayoutBackend"
后端指定模板标签如何确定模板路径。有两个选项–BasicLayoutBackend 和 ModelProvidedLayoutBackend。基本使用模型继承作为目录结构。模型提供的也这样做,但可选地允许模型确定自己的模板查找。提供了一些模型混合,用于常见场景。如果您需要其他功能,请随意编写自己的后端。
贡献
开发在 Github 上进行。欢迎参与!
发现了一个错误?在 Github Issues 上提交。请尽可能提供详细信息,并确保列出特定组件,因为我们使用集中式、项目范围的问题跟踪器。
进行测试? pip install tox 并运行 tox
有代码要提交吗?Fork 仓库,在主题分支上合并您的更改,并创建一个 拉取请求。armstrong.dev 包提供了测试、覆盖率和 South 迁移的工具,并使得使用该组件设置运行完整的 Django 环境变得非常容易。
有问题、需要帮助或讨论?请使用我们的 Google Group 邮件列表。
项目状态
Armstrong 是一个开源新闻平台,任何组织都可以免费使用。它是 Texas Tribune 和 The Center for Investigative Reporting 合作的结果,并由 John S. and James L. Knight Foundation 提供资助。Armstrong 可作为完整捆绑包和单个独立组件提供。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
armstrong.core.arm_layout-1.4.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a6a46b996c0a2a123ac6bb5b86ff76b2fc7323635fe0b6f7f417ced630bfd1d8 |
|
MD5 | b04f17915cfd69dc62455a1d7448d244 |
|
BLAKE2b-256 | 04d9da8d91a3b60e76754c65d3a833652d1340d4e6e994946f27588d5b7f95fc |