提供内容的分层分类
项目描述
在Armstrong站点内提供内容分类。
Section模型为内容提供分层组织,或者说为任何您想组织的东西提供。在Armstrong生态系统中,我们组织文章。例如,Texas Tribune有一个移民部分,该部分又有一个庇护城市和梦想法案作为子部分。类似于典型的树结构,属于子项的内容也属于父项。您还可以忽略层次结构,创建平面结构。
ArmSections 还提供了一种用于显示节内项的基本视图和一个模板标签,用于显示(并链接到)所有节。还包括一个 Feed 视图、一个管理员显示混合类以及用于内容项的 queryset 管理器。这些功能尚未得到充分文档说明...
使用方法
将 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)
节旨在存储单个模型类型(或单个父类型,继承是可行的。实际上,继承是 ArmSections 的一个优势)。如果您没有使用 armstrong.apps.content 伴侣包,您需要在设置中设置 ARMSTRONG_SECTION_ITEM_MODEL。
在关系的另一侧,节具有 items 和 published 属性,允许对关联内容的访问方式不同。这些属性由可配置的后端提供,以实现灵活性,因此您可以自定义查找。例如,“已发布”可能表示内容上的非草案标志或标志和日期的组合;通过交换 published 后端来满足需求。
ItemFilter 和 PublishedItemFilter 是默认选项,并与用于伴侣(但不是必需的)armstrong.core.arm_content 的 managers 相关联。它们还了解 django-model-utils InheritanceManager 并将利用 select_subclasses()(如果可用)。
显示节
您可以通过 SimpleSectionView 类视图(CBV)显示节。首先,设置一个命名的 URL 路由
url(r'^section/(?P<full_slug>[-\w/]+)', SimpleSectionView.as_view(template_name='section.html'), name='section_view'),
然后使用 {% section_menu %} 模板标签在您的模板中显示所有节的列表。首先使用 {% load section_helpers %} 来使用模板标签,并提供一个 section_view 参数,它是与您的节视图相关联的命名 URL 路由。组合在一起
{% 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>
安装与配置
支持 Python 2.6 和 2.7 上的 Django 1.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 或(如果您使用 South)manage.py migrate(在这种情况下使用 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
有代码要提交?请Fork仓库,在主题分支上合并您的更改,并创建一个 pull request。armstrong.dev包提供了测试、覆盖率以及South迁移的工具,并且使用此组件的设置运行完整的Django环境变得非常简单。
有问题、需要帮助或讨论?请使用我们的 Google Group 邮件列表。
项目状态
Armstrong 是一个开源新闻平台,任何组织都可以免费使用。它是 Texas Tribune 和 Bay Citizen 合作的结果,并得到了 John S. and James L. Knight Foundation 的资助。Armstrong 可作为一个完整的包和单独的组件提供。
项目详情
armstrong.core.arm_sections-1.6.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d92c8e8fa49c2579af5538eabbbf1b8689ce6048a0c8792b01d27bfa0ffaaf37 |
|
MD5 | d6357f6dc4f9579ad5dbb07b5fd24a80 |
|
BLAKE2b-256 | 58d569af4751076e68c97ccf98084c92e45c7e753a85fa634757ed61281f51fb |