一个灵活、可扩展的CMS,具有自定义节点类型和灵活的区块内容。
项目描述
django-fluent-pages
这是一个独立的模块,提供灵活、可扩展的CMS,具有自定义节点类型和灵活的区块内容。
功能
完全可定制的页面层次结构。
支持多语言网站。
支持单个数据库中的多个网站。
快速SEO友好的页面URL。
SEO优化(元关键词、描述、标题、301重定向、网站地图集成)。
支持自定义页面类型的插件,
将应用程序逻辑集成到页面树中。
集成高级区块编辑(通过django-fluent-contents)。
更多详情请参见Read The Docs上的文档。
页面树定制
本模块提供了一个页面树,每个节点类型都可以是不同的模型。这使得您等开发者可以根据自己的需求来结构化您的站点树。例如:
通过定义RstPage类型,构建RST页面的树结构。
通过集成django-fluent-contents,构建基于小部件的页面树。
构建“产品页面”,将所有产品作为子节点暴露出来。
构建一个包含主页、子部分和文章节点、每个节点都有像专业CMS那样自定义字段的树。
每个节点类型都可以有自己的自定义字段、属性和渲染。
如果您正在构建一个自定义CMS,这个模块可能非常适合您,因为它提供了树结构,而不必关心其他任何事情。实际的页面内容是通过页面类型插件定义的。
安装
首先安装模块,最好在虚拟环境中进行
pip install django-fluent-pages
所有依赖项都将自动安装。
配置
您也可以使用现成的模板
mkdir my-website.com
cd my-website.com
django-admin.py startproject mywebsite . -e py,rst,example,gitignore --template=https://github.com/edoburu/django-project-template/archive/django-fluent.zip
或创建一个新项目
cd ..
django-admin.py startproject fluentdemo
要使用已集成的django-fluent-contents的标准设置,请使用
INSTALLED_APPS += (
# The CMS apps
'fluent_pages',
# Required dependencies
'mptt',
'parler',
'polymorphic',
'polymorphic_tree',
'slug_preview',
# Optional widget pages via django-fluent-contents
'fluent_pages.pagetypes.fluentpage',
'fluent_contents',
'fluent_contents.plugins.text',
'django_wysiwyg',
# Optional other CMS page types
'fluent_pages.pagetypes.redirectnode',
# enable the admin
'django.contrib.admin',
)
DJANGO_WYSIWYG_FLAVOR = "yui_advanced"
请注意,每个CMS应用都是可选的。只有fluent_pages和mptt是必需的。其余的应用为系统添加了额外的功能。
在urls.py
urlpatterns += patterns('',
url(r'', include('fluent_pages.urls'))
)
之后可以创建数据库
./manage.py migrate
./manage.py runserver
自定义页面类型
本模块的关键特性是对自定义节点类型的支持。请查看fluent_pages.pagetypes中现有的类型,了解它是如何实现的。
这归结为创建一个包含两个文件的包
在models.py文件中定义自定义节点类型及其任何字段
from django.db import models
from django.utils.translation import ugettext_lazy as _
from fluent_pages.models import HtmlPage
from mysite.settings import RST_TEMPLATE_CHOICES
class RstPage(HtmlPage):
"""
A page that renders RST code.
"""
rst_content = models.TextField(_("RST contents"))
template = models.CharField(_("Template"), max_length=200, choices=RST_TEMPLATE_CHOICES)
class Meta:
verbose_name = _("RST page")
verbose_name_plural = _("RST pages")
一个page_type_plugins.py文件,用于定义元数据和渲染
from fluent_pages.extensions import PageTypePlugin, page_type_pool
from .models import RstPage
@page_type_pool.register
class RstPagePlugin(PageTypePlugin):
model = RstPage
sort_priority = 10
def get_render_template(self, request, rstpage, **kwargs):
return rstpage.template
一个模板可能看起来像这样
{% extends "base.html" %}
{% load markup %}
{% block headtitle %}{{ page.title }}{% endblock %}
{% block main %}
<h1>{{ page.title }}</h1>
<div id="content">
{{ page.rst_content|restructuredtext }}
</div>
{% endblock %}
就这样:用很少的代码就创建了一个自定义CMS。
可选地,还可以定义model_admin,以在编辑或删除页面中具有自定义字段布局或额外功能。
插件配置
插件可以定义以下属性
model - 页面类型的模型
model_admin - 要使用的自定义管理员(必须继承自PageAdmin)
render_template - 用于渲染的模板
response_class - 响应类(默认为TemplateResponse)
is_file - 节点是否代表文件,并且不应以斜杠结尾。
can_have_children - 节点类型是否允许有子节点。
urls - 子页面的自定义URL模式集(可以是模块名称,或patterns()结果)。
sort_priority - 在“添加页面”对话框中的排序顺序。
它还可以覆盖以下函数
get_response(self, request, page, **kwargs) - 完全重新定义响应,而不是使用response_class、render_template等。
get_render_template(self, request, page, **kwargs) - 返回要渲染的模板,默认情况下这是render_template。
get_context(self, request, page, **kwargs) - 返回节点的模板上下文。
有关这些属性的详细信息,请参阅文档。
应用节点
如上所述,页面类型可以通过 urls 属性拥有自己的 URL 模式集。这允许实现“产品页面”等页面类型,在树结构中自动拥有所有数据库产品的子页面。这个 example 模块演示了这一概念。
URL 模式从页面的完整路径开始,因此它与 URLconf 中的常规 include() 类似。然而,页面类型可以被多次添加到树中。为了解析 URL,有 2 个函数可用
fluent_pages.urlresolvers.app_reverse() - 这个类似 reverse() 的函数定位与页面相关联的视图。
fluent_pages.urlresolvers.mixed_reverse() - 这个解析器首先尝试 app_reverse(),然后回退到标准的 reverse()。
mixed_reverse() 对于第三方应用很有用,这些应用可以作为独立的(在正常的 URLconf 中挂载)运行,或者作为与 django-fluent-pages 结合使用的页面类型节点运行。这些功能也被 django-fluent-blogs 使用,以提供一个可以添加到树中任意位置的“博客”页面类型。
将页面添加到网站地图
可选地,页面可以包含在网站地图中。在 urls.py 中添加以下内容
from fluent_pages.sitemaps import PageSitemap
sitemaps = {
'pages': PageSitemap,
}
urlpatterns += patterns('',
url(r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),
)
贡献
此模块旨在通用。如果您对此有任何不满,或认为它不够灵活,请告诉我们。我们很乐意改进它!
如果您有任何其他有价值的贡献、建议或想法,也请告诉我们,因为我们会考虑这些。我们也欢迎拉取请求。:-)
项目详情
下载文件
为您的平台下载文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
构建分发
哈希值 为 sigmacms_fluent_pages-1.0.1-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 440a4e19008f21d69f023b618320126c2c1ab87318cd9679a8425201d39a1ef8 |
|
MD5 | 121719fabfc8fd5b43e9102a462c478a |
|
BLAKE2b-256 | d50472ecbfdcab99926f1c4aec8580081ac369510bcee1b9b09a91d9f1c1af8d |