在非Django CMS页面中使用placeholder标签的问题咨询
问题解答
这是预期行为。Django CMS的占位符(placeholder)默认仅在CMS管理的页面实例中生效,apphook挂载的独立详情视图不属于CMS页面范畴,因此结构视图不会识别并渲染这类占位符。
要让占位符在apphook详情页中显示,可按以下步骤操作:
- 让视图继承
CMSApphookMixin或直接使用PlaceholderMixin,确保视图能获取CMS占位符的上下文数据 - 若手动实现,需在视图的
get_context_data方法中添加占位符相关的上下文;使用PlaceholderMixin则可直接利用其内置功能 - 确保模板正确加载,且视图已传递必要的CMS上下文
- 在Django CMS后台的对应apphook配置中添加占位符定义,或在模型里通过
PlaceholderField关联占位符
简单实现示例:
- 视图类代码:
from django.views.generic import DetailView from cms.views import PlaceholderMixin from .models import YourModel class YourDetailView(PlaceholderMixin, DetailView): model = YourModel template_name = "your_detail_template.html" placeholder_name = 'content' # 指定要使用的占位符名称
- 模板中保留
{% placeholder 'content' %}标签即可
完成上述配置后,切换到结构视图时占位符就能正常显示,你可像编辑CMS页面一样操作它的内容。
内容的提问来源于stack exchange,提问作者Skipperr
相关产品推荐
相关产品推荐

