跳转到主要内容

提供内容的分层分类

项目描述

TravisCI status Coverage status PyPI Version License

在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

在关系的另一侧,节具有 itemspublished 属性,允许对关联内容的访问方式不同。这些属性由可配置的后端提供,以实现灵活性,因此您可以自定义查找。例如,“已发布”可能表示内容上的非草案标志或标志和日期的组合;通过交换 published 后端来满足需求。

ItemFilterPublishedItemFilter 是默认选项,并与用于伴侣(但不是必需的)armstrong.core.arm_contentmanagers 相关联。它们还了解 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。)

  1. pip install armstrong.core.arm_sections

  2. armstrong.core.arm_sections 添加到您的 INSTALLED_APPS

  3. 安装数据库模式

    • Django 1.7+ 使用 manage.py migrate

    • 之前的 Django 使用 manage.py syncdb 或(如果您使用 Southmanage.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 TribuneBay Citizen 合作的结果,并得到了 John S. and James L. Knight Foundation 的资助。Armstrong 可作为一个完整的包和单独的组件提供。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

armstrong.core.arm_sections-1.6.0.tar.gz (15.0 kB 查看哈希值)

上传时间 源代码

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面