Django-cms 和自动阻塞

Posted

技术标签:

【中文标题】Django-cms 和自动阻塞【英文标题】:Django-cms and autoblocks 【发布时间】:2016-05-16 08:02:21 【问题描述】:

我正在处理在线商店项目。在产品模型中,我有描述字段,但它是空的。不知何故,描述数据存储在 django-cms 和 autoblocks 中。从页面中,我可以使用 django-cms 编辑该描述。在模板标签% autoblock product.slug % 行是描述。

在 views.py 中,我将“产品”作为上下文传递,但它的 slug 字段与描述无关。另外,如果我写 product.slug ,它会给我带来麻烦。

还用谷歌搜索了 Autoblocks,但最终发现是这个模型:

class Autoblock(models.Model):
    composite_id = models.CharField(max_length=150)
    content = PlaceholderField('content')
    site = models.ForeignKey(Site)

    def __unicode__(self):
        return self.composite_id

所有这些字段都与描述无关。

我苦苦挣扎了很长时间才能找到该描述的位置。任何提示将不胜感激。

已编辑:

产品型号:

class HBaseProduct(Product):
    def __init__(self, *args, **kwargs):
        super(HBaseProduct, self).__init__(*args, **kwargs)

    image = models.ImageField(upload_to='images/', blank=True, max_length=300,        verbose_name=_('Image'))
    position = models.IntegerField(default=0, null=False)
    description = models.TextField(null=True, blank=True)

【问题讨论】:

可以分享一下产品型号吗? 已添加。但是模型与自动块中的描述无关 product.description 应该给你产品描述 是的,如果有的话。它现在是空的,我需要将描述从 autoblocks 迁移到 product.description。但我在代码中找不到该描述。 【参考方案1】:

您的描述在Autoblock.content 中,它是ForeignKey'cms.Placeholder',而'cms.CMSPlugin' 模型树又包含在cmsplugin_set 中。

目前没有直接的方法可以将Placeholder 转换为(html)字符串,以便在请求/响应周期之外的其他地方使用。

最好的办法是调用 Placeholder.render 并使用包含(假)Django Request 对象的上下文对象。这将返回呈现的内容,然后您可以将其存储在description

【讨论】:

谢谢,帮了大忙。 :)

以上是关于Django-cms 和自动阻塞的主要内容,如果未能解决你的问题,请参考以下文章

Django CMS 自动显示正确的占位符插件

翻译 | 关键CSS和Webpack: 减少阻塞渲染的CSS的自动化解决方案

第1082期关键CSS和Webpack: 减少阻塞渲染的CSS的自动化解决方案

自动测试后安全清理阻塞的 std::thread

django-cms 和 jQuery

Django cms 从 Textplugin 中删除 href 属性