与armstrong相关的布局代码

armstrong.core.arm_layout的Python项目详细描述


TravisCI statusCoverage statusPyPI VersionLicense

提供用于阿姆斯特朗和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" %}

这些循环帮助程序的一个限制是它们不能添加或限制上下文 使用withonly作为render_model可以。但是你可以 {% with need="this"and="that" %} ... {% endwith %}块中的标记。 请参阅with documentation

安装和配置

在Python2.6和2.7上支持Django1.3、1.4、1.5、1.6、1.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。basic使用模型继承作为目录 结构。提供的模型也可以这样做,但可以选择允许模型 确定它自己的模板查找。提供几种型号的混合器。 常见场景。如果你需要其他的后台,可以自己写。 功能。

贡献

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

  • 找到虫子了吗?在Github Issues上归档。包括尽可能多的细节 因为我们使用的是集中式的, 项目范围问题跟踪程序。
  • 测试?pip install tox并运行tox
  • 有代码要提交吗?从回购协议中分离出来,整合你对某个主题的更改 分支并创建一个pull requestarmstrong.dev包提供 用于测试、覆盖和南部迁移的工具,以及 使用此组件的设置很容易运行完整的django环境。
  • 问题,需要帮助,讨论?使用我们的Google Group邮件列表。

职业状态项目

Armstrong是一个开源的新闻平台,任何人都可以免费使用 组织。它是Texas Tribune之间协作的结果 以及The Center for Investigative ReportingJohn S. and James L. Knight Foundation。阿姆斯特朗作为 完整的捆绑包和独立组件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JPA。Eclipselink没有为mySQL提供密码,但它应该提供   我的Servlet和@FormDataParam存在java问题   java将什么作为上下文参数传递到文件I/O方法中?   如果两个值相同,java无法找到其中一个单选按钮   java在变量和方法名中使用下划线   JavaSpringMVC单线程安全?   klazz类的java Arraylist(反射Api)   java如何在数字字符串中查找最频繁的数字?   JavaAPI设计:使数据更易于阅读与强制更多API调用   JavaHadoopMapReduceforGoogleWebGraph   java无法启动gauge API:Runner意外退出   java如何在bluemix上使用ibm工作负载调度器?   拉取一年中某一周特定日期的所有日期   java为什么是我的角节点。js应用程序将图像上传到S3� 邮递员正确上传时的符号?   在不使用任何第三方jar的情况下将文件从本地传输到linux系统(java代码)   java将现有文件夹复制到Eclipse工作区中新创建的项目中   Java中的regex RegExp帮助   当使用“系统”外观时,Java组合框setSelectedItem会出现故障   JavaASM:在类的方法中获取局部变量名和值