Kotti是一个基于Pyramid和SQLAlchemy的高级Pythonic Web应用程序框架。它包括一个称为Kotti CMS的可扩展内容管理系统(请参见下文)。
当您开发应用程序时需要实现以下内容时,Kotti就可以很有用:
- 有复杂的安全要求,
- 使用工作流程,and/or,
- 处理分层数据
Kotti建立在许多同类最佳的软件组件(最著名的是Pyramid和SQLAlchemy)的基础上,仅介绍了一些自己的概念,因此希望对开发人员保持学习曲线的平稳性。
Kotti CMS
Kotti CMS是受Plone启发的内容管理系统。其主要特点是:
- 用户友好:编辑者可以编辑内容出现的地方;因此,编辑界面是上下文和直观的
- 所见即所得编辑器:包括一个富文本编辑器
- 响应式设计:Kotti建立在Bootstrap之上,在台式机和移动设备上看起来都不错
- 模板:您几乎不需要编程即可以自己的外观扩展CMS
- 附加组件:安装各种附加组件,并使用INI配置文件自定义它们以及内置CMS的许多方面
- 安全性:先进的用户和权限管理非常直观,并且可以扩展以适应大型组织的要求
- 国际化的:用户界面是完全可翻译的,Unicode用于存储数据
请如果您需要安装测试,您可以下载我们提供的Kotti源文件网盘备份。
支持和文件
阅读Kotti的官方文档:kotti.readthedocs.io。
示例
import warnings
from pyramid.httpexceptions import HTTPNotFound
from pyramid.view import notfound_view_config
from pyramid.view import render_view_to_response
from pyramid.view import view_config
from kotti.interfaces import IContent
from kotti.views.util import search_content
from kotti.views.util import search_content_for_tags
@view_config(context=IContent)
def view_content_default(context, request):
"""This view is always registered as the default view for any Content.
Its job is to delegate to a view of which the name may be defined
per instance. If a instance level view is not defined for
'context' (in 'context.defaultview'), we will fall back to a view
with the name 'view'.
"""
view_name = context.default_view or "view"
response = render_view_to_response(context, request, name=view_name)
if response is None: # pragma: no cover
warnings.warn(
"Failed to look up default view called {!r} for {!r}.".format(
view_name, context
)
)
raise HTTPNotFound()
return response