Django的页面作曲家
django-composer-prk的Python项目详细描述
django作曲家
通过组合列表和单个内容来构建页面
快速启动
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
安装
- 将 composer/tests/requirements/19.txt的内容安装到您的python环境中。
- 将作曲家添加到已安装的应用程序设置中。
- 将composer.middleware.composerFallbackMiddleware添加到中间件设置中。这将 替换flatpages 404中间件,因此在需要时删除它。
- 将composer.context_processors.slots添加到context processors设置。
- 在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和插槽名匹配的适当插槽,则该插槽将在页面上呈现。当前匹配逻辑的工作原理如下:
- 找到与当前url最匹配的插槽。槽url被视为正则表达式,因此一个槽可以匹配多个url。
内容槽是特殊的:
- 如果正在呈现的模板填充了内容块,则它将胜过可能尝试填充内容块的任何槽。
设置
您需要在"设置"中定义系统可用的磁贴类型。这个 平铺 样式是隐式添加的。请参见"平铺渲染"部分,了解如何 创建相应的模板:
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 。变量 平铺 和 内容 是 在模板上下文中提供。