django - 如何在 django-CMS 之外使用占位符?
问题描述
我正在尝试在 django-cms 上实施有关如何在 CMS 之外使用占位符的文档
似乎可以在 CMS 外部的模型应用程序中定义一个字段,其行为类似于djangocms-text-ckeditor
但我无法让这个“模板标签”工作
{% extends 'base.html' %}
{% load cms_tags %}
{% block content %}
<h1>Title page info</h1>
{% render_placeholder object.short_text "640" %}
{% endblock content %}
这是我的 info.models.py
from django.db import models
from cms.models.fields import PlaceholderField
class MsgDet(models.Model):
title = models.CharField(max_length=255)
short_text = PlaceholderField('content')
我使用django CMS 安装程序在 django-cms 教程之后创建了一个小型 django-cms 项目。源代码在 GitHub 上的OpenHBP/PlaceholderField下。我向 cms 添加了一个简单的信息应用程序,并尝试在“CKEditor like”插件中显示“MsgDet.short_text”字段。
双击 CMS 主页会打开 CKeditor 窗口。我想在我的信息页面上获得相同的结果!
我知道这可以通过使用ckeditor的RichTextField来实现,但我想使用“PlaceHolderFiled”来访问 djangoCMS 插件:图片/图像或文件。
请注意,我也尝试过使用django-ckeditor-filebrowser-filer但该项目似乎已被弃用并且 pdf 上传不起作用。
我只想能够从“CKEditor like”窗口访问文件管理器文件(图像和文档)......
解决方案
现在可以了!
我已经添加了一个CMS_PLACEHOLDER_CONF字典,settings.py
其中包含一个包含默认文本的特定“msgdet_slot”,'Lorem ipsum dolor sit amet...'
以便当连接到 CMS 并且当页面处于修改状态时它在页面上可见:?edit 在 URL 的末尾。
CMS_PLACEHOLDER_CONF = {
None: {
"plugins": ['TextPlugin'],
'excluded_plugins': ['InheritPlugin'],
},
'msgdet_slot': {
'plugins': ['TextPlugin', 'PicturePlugin', 'FilePlugin'],
'text_only_plugins': ['LinkPlugin'],
'extra_context': {"width":640},
'name': "My slot",
'language_fallback': True,
'default_plugins': [
{
'plugin_type': 'TextPlugin',
'values': {
'body':'<p>Lorem ipsum dolor sit amet...</p>',
},
},
],
'child_classes': {
'TextPlugin': ['PicturePlugin', 'FilePlugin'],
},
'parent_classes': {
'LinkPlugin': ['TextPlugin'],
},
},
}
models.py
因此必须修改
from django.db import models
from cms.models.fields import PlaceholderField
class MsgDet(models.Model):
title = models.CharField(max_length=255)
short_text = PlaceholderField('msgdet_slot')
最好使用您自己的插槽而不是 CMS 使用的通用“内容”,以便您可以修改要显示的 CMS 插件。在我的示例中,我只显示图片和文件插件。
另请注意,如果某些页面已使用名为“myslot”的插槽进行编辑,并且您将其更改为“msgdet_slot”,则旧页面的配置(可见 CMS 插件)将保留为“myslot”。File PlaceHolder 确实以唯一的 PK 存储在“cms_placeholder”表中。
推荐阅读
- python - 有没有办法找到变量何时更改值?
- rest - REST API 设计:依赖资源
- xml - 无法为 Go 结构解组 XML
- azure - 私有 IP 的 Azure 应用程序网关 SSL 设置
- django - 使用 istio 或 nginx 通过前端代理后端
- reactjs - 打字稿反应,如何设置数组的状态
- bash - 如何将输入参数放在 bash 脚本单元格上?
- opencv - Detection of color with a trackbar and finding the contour of the desired color
- python - CS50: PSET6 [DNA] Loop miscounts longest run of STR
- angular - Adding to this simple HTTP request Observable method