提供内容的层次分类
armstrong.core.arm_sections的Python项目详细描述
在Armstrong站点中提供内容分类。
Section模型提供内容的层次结构,或者 你想组织什么就组织什么。阿姆斯特朗生态系统 我们组织文章。例如,德克萨斯论坛报有一个移民 一个有圣城和梦想的区域扮演孩子的角色 部分。就像典型的树结构,任何属于孩子的东西 也属于父母。也可以忽略层次结构并创建 扁平的结构
armSections还为节和模板中的项提供了基本视图 用于显示(和链接到)所有节的标记。还提供 馈送视图、管理显示混合器和查询集管理器,用于 内容项。这些文件并没有按原样记录…
用法
向要显示的任何模型添加section字段 在给定的部分。
# models.py from django.db import models from armstrong.core.arm_sections.models import Section class MyArticle(models.Model): title = models.CharField(max_length=100) body = models.TextField() section = models.ForeignKey(Section)
您还可以通过ManyToManyField:
class MyArticle(models.Model): sections = models.ManyToManyField(Section)
截面用于保存单个模型类型(或单个 父类型,继承很好。实际上继承是 优势)。如果不使用armstrong.apps.content伙伴 包,您需要在设置中设置ARMSTRONG_SECTION_ITEM_MODEL。
在关系的另一端,节有items和 published允许对关联的 内容。这些属性由 灵活性,这样你就可以定制查找。例如,“发布”可能 指内容上的非草稿标志或标志和日期的组合; 交换published后端以满足需要。
ItemFilter和PublishedItemFilter是默认值并绑定到 managers用于同伴(但不是必需的) armstrong.core.arm_content。他们也知道django-model-utils 继承管理器,如果可用,将使用select_subclasses()。
显示节
可以通过基于SimpleSectionView类的视图显示节 (CBV)。首先,设置一个命名的url路由:
url(r'^section/(?P<full_slug>[-\w/]+)', SimpleSectionView.as_view(template_name='section.html'), name='section_view'),
然后使用{% section_menu %}template标记显示所有 模板中的节。{% load section_helpers %}首先使用 模板标记并提供一个命名url路由section_viewkwarg 与剖面视图关联。组合起来:
{% load section_helpers %} {% section_menu section_view='section_view' %}
数据库中有以下部分…
Politics Sports Football Basketball Fashion
…到目前为止,模板的输出如下:
<ul class="root"> <li> <a href='/section/politics/'>Politics</a> </li> <li> <a href='/section/sports/'>Sports</a> <ul class="children"> <li> <a href='/section/sports/football/'>Football</a> </li> <li> <a href='/section/sports/basketball/'>Basketball</a> </li> </ul> </li> <li> <a href='/section/fashion/'>Fashion</a> </li> </ul>
安装和配置
在Python2.6和2.7上支持Django1.3、1.4、1.5、1.6、1.7。 (如果您使用的是django 1.3,请确保使用django mptt<;0.6.)
- pip install armstrong.core.arm_sections
- 将armstrong.core.arm_sections添加到INSTALLED_APPS
- 安装数据库架构
- django 1.7+使用manage.py migrate
- 以前的django使用manage.py syncdb或manage.py migrate 如果您使用South(在这种情况下,使用South 1.0+)
可选设置:(用于settings.py)
有三种设置可用于更改此 组件及其与内容项的关系。
- ARMSTRONG_SECTION_ITEM_BACKEND
- 这用于配置哪个后端用于查找项目 与给定的Section关联。(默认值: armstrong.core.arm_sections.backend.ItemFilter)
- ARMSTRONG_SECTION_PUBLISHED_BACKEND
- 与item_backend相同,只是它是为限制已发布的项而设计的。 (默认值:armstrong.core.arm_sections.backend.PublishedItemFilter)
- ARMSTRONG_SECTION_ITEM_MODEL
- 由两个默认后端用于确定哪个模型具有节 与之相关。(默认值:armstrong.apps.content.models.Content)
贡献
在github上进行开发。欢迎参与!
- 找到虫子了吗?在Github Issues上归档。包括尽可能多的细节 因为我们使用的是集中式的, 项目范围问题跟踪程序。
- 测试?pip install tox并运行tox
- 有代码要提交吗?从回购协议中分离出来,整合你对某个主题的更改 分支机构d创建一个pull request。armstrong.dev包提供 用于测试、覆盖和南部迁移的工具,以及 使用此组件的设置很容易运行完整的django环境。
- 问题,需要帮助,讨论?使用我们的Google Group邮件列表。
项目状态
Armstrong是一个开源的新闻平台,任何人都可以免费使用 组织。它是Texas Tribune之间协作的结果 以及Bay Citizen和John S. and James L. Knight Foundation的拨款。阿姆斯特朗是作为一个完整的捆绑包和个人, 独立组件。