跳转到主要内容

与Armstrong相关的布局代码

项目描述

TravisCI status Coverage status PyPI Version License

为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_modelarmstrong.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" %}

这些循环辅助工具的局限性是它们不能使用 withonly 添加或限制上下文,如 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 上。

  1. pip install armstrong.core.arm_layout

  2. armstrong.core.arm_layout 添加到您的 INSTALLED_APPS

可选设置:(在 settings.py 中使用,可以省略)

ARMSTRONG_LAYOUT_BACKEND = "armstrong.core.arm_layout.backends.BasicLayoutBackend"

后端指定模板标签如何确定模板路径。有两个选项–BasicLayoutBackendModelProvidedLayoutBackend。基本使用模型继承作为目录结构。模型提供的也这样做,但可选地允许模型确定自己的模板查找。提供了一些模型混合,用于常见场景。如果您需要其他功能,请随意编写自己的后端。

贡献

开发在 Github 上进行。欢迎参与!

  • 发现了一个错误?在 Github Issues 上提交。请尽可能提供详细信息,并确保列出特定组件,因为我们使用集中式、项目范围的问题跟踪器。

  • 进行测试? pip install tox 并运行 tox

  • 有代码要提交吗?Fork 仓库,在主题分支上合并您的更改,并创建一个 拉取请求armstrong.dev 包提供了测试、覆盖率和 South 迁移的工具,并使得使用该组件设置运行完整的 Django 环境变得非常容易。

  • 有问题、需要帮助或讨论?请使用我们的 Google Group 邮件列表

项目状态

Armstrong 是一个开源新闻平台,任何组织都可以免费使用。它是 Texas TribuneThe Center for Investigative Reporting 合作的结果,并由 John S. and James L. Knight Foundation 提供资助。Armstrong 可作为完整捆绑包和单个独立组件提供。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

armstrong.core.arm_layout-1.4.0.tar.gz (12.2 kB 查看哈希值)

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面