提供内容的层次分类

armstrong.core.arm_sections的Python项目详细描述


TravisCI statusCoverage statusPyPI VersionLicense

在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

在关系的另一端,节有itemspublished允许对关联的 内容。这些属性由 灵活性,这样你就可以定制查找。例如,“发布”可能 指内容上的非草稿标志或标志和日期的组合; 交换published后端以满足需要。

ItemFilterPublishedItemFilter是默认值并绑定到 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.)

  1. pip install armstrong.core.arm_sections
  2. armstrong.core.arm_sections添加到INSTALLED_APPS
  3. 安装数据库架构
    • django 1.7+使用manage.py migrate
    • 以前的django使用manage.py syncdbmanage.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 requestarmstrong.dev包提供 用于测试、覆盖和南部迁移的工具,以及 使用此组件的设置很容易运行完整的django环境。
  • 问题,需要帮助,讨论?使用我们的Google Group邮件列表。

项目状态

Armstrong是一个开源的新闻平台,任何人都可以免费使用 组织。它是Texas Tribune之间协作的结果 以及Bay CitizenJohn S. and James L. Knight Foundation的拨款。阿姆斯特朗是作为一个完整的捆绑包和个人, 独立组件。

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

推荐PyPI第三方库


热门话题
postgresql是Hibernate在EclipseLink中用于映射java的PostgresUUIDType模拟。util。UUID到Postgres的“UUID”类型   java如何连接到opensuse上的mysql localhost?   项目反应器(或RxJava2)的java执行器序列调用   JavaSpring控制器保留旧值   在Java中创建悬空指针   java SpringBootApplication scanBasePackages未读取子包   java C++文件头文件如果包含私有成员变量声明,它怎么能被看作类的“接口”呢?   java如何报告面板更改为父容器?   如果运行时打印错误,java将停止程序   将Java Spring应用部署到heroku时,json时区指示器“”无效   java如何使用spring的分层架构,并且仍然遵循面向对象的结构?   java从简单表达式中获取null   java使用正则表达式从字符串中提取ip地址   java如何设置一些属性而不是xml元素   java为什么按钮不反映Action的NAME属性?   java在调用Spring引导API时遇到404错误   java如何将大型参数从一个jsp传递到另一个jsp?   java JPanel paintComponent()不会在JFrame中绘制