Django的页面作曲家

django-composer-prk的Python项目详细描述


django作曲家

通过组合列表和单个内容来构建页面

https://travis-ci.org/praekelt/django-composer-prk.svg?分支=开发https://coveralls.io/repos/github/praekelt/django-composer-prk/badge.svg?分公司=开发

快速启动

django composer prk 旨在成为一个独立的库,而不是一个项目,但它确实可以使用以下命令运行:

- virtualenv ve
- ./ve/bin/pip install -r composer/tests/requirements/19.txt
- ./ve/bin/python manage.py migrate --run-syncdb --settings=composer.tests.settings.19
- ./ve/bin/python manage.py runserver 0.0.0.0:8000 --settings=composer.tests.settings.19

安装

  1. composer/tests/requirements/19.txt的内容安装到您的python环境中。
  2. 将作曲家添加到已安装的应用程序设置中。
  3. 将composer.middleware.composerFallbackMiddleware添加到中间件设置中。这将 替换flatpages 404中间件,因此在需要时删除它。
  4. 将composer.context_processors.slots添加到context processors设置。
  5. 在url.py中添加以下内容
url(r"^nested_admin/", include("nested_admin.urls"))

内容类型

插槽:

  • url:插槽应该出现的url或url模式。这可能是一个正则表达式。
  • 插槽名称:在项目中,插槽名称在 templates/base.html 中定义。此字段提供从该基本模板中找到的编写器插槽自动生成的选项。

行:

  • 每一行都嵌套在一个槽中(按顺序排列)。
  • 行可以有额外的css类。

列:

  • 每一列嵌套在一行中(按顺序排列)。
  • 宽度:一行有12列宽,因此列可以彼此相邻。
  • 标题:在列的顶部呈现。可以为空。
  • 类名:可以添加到列包装div的额外css类。

瓦特:

  • 每个磁贴都嵌套在一列中(按顺序排列)。
  • tile目标是一个泛型外键,因此它可以引用任何cont耳鼻喉科类型。
  • 视图名称可以是任何django命名的视图。
  • 降价是特别的内容。降价的管理用户界面目前不是最佳的,需要访问 tiles 列表。
  • 样式:该样式用于查找用于渲染目标的合适模板。一个例子是 templates/myapp/inclusion\u tags/mymodel\u tile.html
  • 类名:要添加到磁贴的额外css类。

用法

基本模板通常定义一些编写器槽。通常情况下 页眉槽、内容槽和页脚槽。这可以通过 向 模板/base.html 模板添加插槽。添加的示例 边栏槽:

{% if composer_slots %}{% load composer_tags %}{% endif %}

{% if composer_slots.sidebar %}
    <div id="sidebar">
        {% composer sidebar %}
    </div>
{% endif %}

在站点上的任何url上,如果存在与url和插槽名匹配的适当插槽,则该插槽将在页面上呈现。当前匹配逻辑的工作原理如下:

  1. 找到与当前url最匹配的插槽。槽url被视为正则表达式,因此一个槽可以匹配多个url。

内容槽是特殊的:

  1. 如果正在呈现的模板填充了内容块,则它将胜过可能尝试填充内容块的任何槽。

设置

您需要在"设置"中定义系统可用的磁贴类型。这个 平铺 样式是隐式添加的。请参见"平铺渲染"部分,了解如何 创建相应的模板:

COMPOSER = {"styles": (("block", "Block"), ("tiny": "Tiny"))}

如果希望从所有已安装的应用推断样式,请添加:

COMPOSER = {"load-existing-styles": {"greedy": True}}

它将尝试添加所有已绑定到遵循正确命名约定的应用程序和模型的样式。 可与 样式设置一起使用。

或者,可以排除或包括整个应用程序和特定的应用程序型号。

包括:

COMPOSER = {"load-existing-styles": {"includes": {"<app_label>": ["<modelname>",]}}}
COMPOSER = {"load-existing-styles": {"includes": {"<app_label>": "__all__"}}}

不包括:

COMPOSER = {"load-existing-styles": {"excludes": {"<app_label>": ["<modelname>",]}}}
COMPOSER = {"load-existing-styles": {"excludes": {"<app_label>": "__all__"}}}

特别页

django composer prk提供类似于django flatpages的功能。如果任何请求导致页面未找到错误,则 中间件试图呈现名为 content 的和匹配的url。这对于创建 所谓的活动页面。

平铺渲染

作曲家尝试按顺序渲染:视图名称、目标、标记。

视图名称

呈现视图并尝试提取 <;div id="content">; 中的任何内容。这个 结果随后由 templates/composer/tile.html 打印。变量 平铺 并且 内容 在模板上下文中可用。

目标

向上遍历继承层次结构,直到最佳匹配 找到模板。变量 平铺 对象 (目标)和 内容 在模板上下文中可用。

命名约定:

  • 模板/{{ 应用程序标签}/包含标记/{{模型名称}}{{平铺样式}.html
  • 模板/{{ 应用程序标签}/包含标记/{{平铺样式}.html

如果找不到模板,则呈现由 target.get_absolute_url() 如果存在。它试图从 <;div id="content">; 。结果由打印 模板/composer/tile.html 。变量 平铺 内容 是 在模板上下文中提供。

降价

标记转换为HTML,然后由 模板/composer/tile.html 。变量 平铺 内容 是 在模板上下文中提供。

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

推荐PyPI第三方库


热门话题
java将Scanner对象作为构造函数参数传递给UserInterface类   spring未能启动bean“subtocolWebSocketHandler”;嵌套的例外是java。lang.IllegalArgumentException:没有处理程序   Java EE应用程序中后台服务的多线程Java线程(设置守护进程和优先级)?   java Pull to refresh返回列表的第一个位置   无法将comparator类转换为java。可比的   java将json从servlet传递到dojo   JavaHibernate:将子类实例转换为超类实例   java警告调用servlet类时非法反射访问   java静态变量值   java@Entity和@embeddeble之间有什么区别   java将作业配置导入公共作业配置类(注释配置)   sql公共表表达式(以values语句开头)在java中给出错误   java在ImageJ中使用ImageProcessor   java PostgreSQL executeBatch()会随着时间的推移而变慢   java在安卓中以表格形式排列sqllite表数据?   java中SVG的swing定制呈现   java删除与另一个实体映射的实体   java何时/如何添加ListView适配器,使用back按钮恢复它?(片段)   java为什么IBinder和Binder之间的类型转换不是非法的?   java在方法参数列表中使用ArrayList或List