与armstrong相关的布局代码
armstrong.core.arm_layout的Python项目详细描述
提供用于阿姆斯特朗和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_modeltemplate标记来显示给定的模型 像这样:
{% render_model some_model "full_page" %}
some_model是模板中的一个变量,它是一个模型实例,并且 字符串"full_page"是“布局”的名称。render_model查找 对于名为layout/<app_label>/<model>/<layout>.html的模板 用于显示模型实例的内容。再往前走一步,很聪明 足够遍历模型的继承以确定是否存在 任何具有可使用布局的父模型。例如,如果 some_model是^{tt8}的实例$ 从armstrong.apps.content.models.Content,^{tt2}继承的$ 按此顺序查找以下模板:
["layout/articles/article/full_page.html", "layout/content/content/full_page.html", ]
您可以访问^{tt11}中的整个模板上下文。$ 模板。您还有一个名为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 documentation。
安装和配置
在Python2.6和2.7上支持Django1.3、1.4、1.5、1.6、1.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。basic使用模型继承作为目录 结构。提供的模型也可以这样做,但可以选择允许模型 确定它自己的模板查找。提供几种型号的混合器。 常见场景。如果你需要其他的后台,可以自己写。 功能。
贡献
在github上进行开发。欢迎参与!
- 找到虫子了吗?在Github Issues上归档。包括尽可能多的细节 因为我们使用的是集中式的, 项目范围问题跟踪程序。
- 测试?pip install tox并运行tox
- 有代码要提交吗?从回购协议中分离出来,整合你对某个主题的更改 分支并创建一个pull request。armstrong.dev包提供 用于测试、覆盖和南部迁移的工具,以及 使用此组件的设置很容易运行完整的django环境。
- 问题,需要帮助,讨论?使用我们的Google Group邮件列表。
职业状态项目
Armstrong是一个开源的新闻平台,任何人都可以免费使用 组织。它是Texas Tribune之间协作的结果 以及The Center for Investigative Reporting和 John S. and James L. Knight Foundation。阿姆斯特朗作为 完整的捆绑包和独立组件。