将Django CMS项目作为单页应用程序(SPA)运行

djangocms-spa的Python项目详细描述


将Django CMS项目作为单页应用程序(SPA)运行。这个包提供了一个rest-api,它返回 页面内容序列化为json。可以使用两个helper和基类为 自定义视图。djangocms-spawas build to use it with a concrete implementation:

快速启动

安装djangocms_spa:

pip install djangocms-spa

将其添加到您的INSTALLED_APPS

INSTALLED_APPS=(...'djangocms_spa',...)

添加区域设置中间件(如果尚未添加):

MIDDLEWARE=(...'django.middleware.locale.LocaleMiddleware',)

设置默认模板:

DJANGOCMS_SPA_DEFAULT_TEMPLATE='pages/content.html'

设置变量DJANGOCMS_SPA_TEMPLATES需要模板字典。它应该覆盖所有模板 使用路径作为键。前端组件名称和部分列表 (例如静态占位符)是有效的选项。

DJANGOCMS_SPA_TEMPLATES={'pages/content.html':{'frontend_component_name':'content','partials':['menu','meta','footer']},'pages/content_with_section_navigation.html':{'frontend_component_name':'content-with-section-navigation','partials':['menu','meta','footer']},}

配置自定义部分:

DJANGOCMS_SPA_PARTIAL_CALLBACKS={'menu':'djangocms_spa.partial_callbacks.get_cms_menu_data_dict'}

插件

插件不需要呈现模板,只需要返回字典的render_spa方法。干净利落 结构,我们通常将上下文放在字典的content键中:

classTextPlugin(JsonOnlyPluginBase):name=_('Text')model=TextPluginModelfrontend_component_name='cmp-text'defrender_spa(self,request,context,instance):context=super(TextPlugin,self).render_spa(request,context,instance)context['content']['text'].=instance.textreturncontextplugin_pool.register_plugin(TextPlugin)

设置

CACHE_TIMEOUT默认值60 * 10

如果使用的是缓存后端,则会缓存API响应。

DJANGOCMS_SPA_DEFAULT_TEMPLATE默认值'index.html'

DEFAULT_LIST_CONTAINER_NAME默认值'object_list'

列表视图使用此键对其数据进行分组。

CMS_PAGE_DATA_POST_PROCESSOR默认值None

此钩子允许您通过定义模块路径后处理cms页面的数据。

PLACEHOLDER_DATA_POST_PROCESSOR默认值None

此钩子允许您通过定义模块路径后处理占位符的数据。

部分

我们将用于呈现模板的全局页面元素称为“部分”。部分的内容不 从一页改到另一页。在django cms项目中,部分被实现为静态占位符。因为我们 不呈现任何HTML模板,我们需要为中的每个模板配置静态占位符 DJANGOCMS_SPA_TEMPLATES作为部分。要编辑占位符和静态占位符数据,需要同时呈现 在编辑模式下:

{% if request.toolbar.edit_mode %}
    {% placeholder "main" %}
    {% static_placeholder "footer" %}
{% endif %}

通常还有其他部分,如菜单或任何其他模板标记,其工作原理与静态占位符非常相似。 因为我们没有允许呈现模板标记的模板,所以需要为 这些需要。我们决定使用回调方法,允许开发人员将自定义数据带到 列表。通过添加部分键和 回调函数。您可以在djangocms_spa/partial_callbacks.py中找到一个示例。你的函数应该返回 像这样的字典:

{
    'type': 'generic',
    'content': {
        'my_var': 1
    }
}

学分

用于呈现此包的工具:

历史记录

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

推荐PyPI第三方库


热门话题
JavaSpring/json:转换一个类型化的集合,如List<MyPojo>   允许用户下载使用Javascript API由Java小程序生成的文件   在Java中,有没有一种使用构造函数参数快速分配多个类变量的方法?   java ImageIcon未在Swing中加载   java Selenium将值写入。txt文件   JavaWebSphere7JSF   java JSR303验证组定义一个默认组   java如果构造函数中的参数太多,是否存在性能问题?   java如何检索存储在映射值中的对象?   Java中的字符和字符串输入   java将变量从Scriptlet传递到javascript代码。   2016年1月1日的爪哇Joda时间返回yyyyww,截至201653年   java javafx按代码点击按钮   类包不包括src。主要的java,但它在那里,eclipse对此表示不满   网格上的java等值模式