如何从 Django 模板中的页面迭代 cms 插件实例?

2023-12-30

我想显示 YouTube 视频列表并让我的用户编辑此列表。

我想这样做:

  1. 制作一个将显示此内容的模板。在此模板中执行类似的操作<ul>{% for plugin in page %}<li>plugin</li>{% endfor %}</ul>.
  2. Make a youtube_videos占位符并将其配置为仅限于该类型的插件。

但我不知道如何对模板中当前页面中的插件实例进行迭代。我在 django-cms 文档中没有看到任何有关此内容的内容,是的,我猜 django-cms“只是 django”,如果我正确地了解 django 那么我已经弄清楚了这一点。

但这里有一个很好的例子就很好了。


您不会迭代 Django-CMS 中的插件实例。占位符只是以线性方式呈现分配给它们的插件。可以将插件拖放到占位符中以重新排列它们,但据我所知,您无法在模板级别迭代插件本身,至少不容易。

要执行您想要的操作,您需要创建一个 CMS 插件,该插件允许您创建可以迭代的模型的多个实例,类似于“图像库”。

从概念上讲,您将有一个父模型:

class Gallery(CMSPlugin):
    """ A model that serves as a container for images """

    title = models.CharField(max_length=50, help_text='For reference only')

    def copy_relations(self, oldinstance):
        for slide in oldinstance.slides.all():
            slide.pk = None
            slide.gallery = self
            slide.save()

    def __unicode__(self):
        return self.title

和一个子模型:

class Slide(models.Model):
    def get_upload_to(instance, filename):
        return 'galleries/{slug}/{filename}'.format(
            slug=slugify(instance.gallery.title), filename=filename)

    title = models.CharField(max_length=100)
    image = models.ImageField(upload_to=get_upload_to)
    alt = models.CharField(max_length=100)
    gallery = SortableForeignKey(Gallery, related_name='slides')

    def __unicode__(self):
        return self.title

那么你就会有一个 CMS 插件,如下所示:

class CMSGalleryPlugin(CMSPluginBase):
    admin_preview = False
    inlines = Slide
    model = Gallery
    name = _('Gallery')
    render_template = 'gallery/gallery.html'

    def render(self, context, instance, placeholder):
        context.update({
            'gallery': instance,
            'placeholder': placeholder
        })
        return context

plugin_pool.register_plugin(CMSGalleryPlugin)

最后是迭代幻灯片图像的模板:

{% for slide in gallery.slides.all %}
    <img src="{{ slide.image.url }}" alt="{{ slide.alt }}" />
{% endfor %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Django 模板中的页面迭代 cms 插件实例? 的相关文章

  • Django LoginForm 中间件打破了基于类的视图

    据几其他答案 https stackoverflow com questions 2734055 putting a django login form on every page 我使用中间件在项目的每个页面上显示登录表单 以便用户可以就
  • 基于连接表的 Django 过滤器

    我有两张桌子 class Client models Model name models TextField lastname models TextField class Meta managed False db table clien
  • Django 中基于类的视图分页

    我正在尝试对基于类的视图进行分页 这是我的观点 class IssuesByTitleView ListView context object name issue list def issues request issue list Is
  • Django 营业时间

    我想添加诊所的营业时间 我已经对此进行了调查在 Django 中实现 开放时间 的任何现有解决方案 https stackoverflow com questions 8128143 any existing solution to imp
  • matlab 中的 for 或 while 循环

    我刚刚开始在编程课的 matlab 中使用 for 循环 基本的东西对我来说很好 但是我被要求 使用循环创建一个 3 x 5 矩阵 其中每个元素的值是其行号其列号除以行号和列号之和的幂 例如元素 2 3 的值为 2 3 2 3 1 6 那么
  • 如何去除html源代码中的空格

    我正在使用 django 和 python 在模板文件中 我有一个下拉列表 如下所示 有用 唯一的问题是源 html 代码之间有很多空白 有什么办法可以去除空白吗 谢谢 for lang ele in video languages all
  • python:日志记录:我们可以向记录器添加多个过滤器吗?考虑哪一个

    我试图了解 Python 日志记录中的多个过滤器 一个在配置中定义 另一个在代码中定义 如何工作 我正在开发一个 Django 项目 下面是我在 settings py 中的记录器配置 我的目标是switch on and switch o
  • 如何在 Django 模板中显示站点的用户友好名称?

    我正在寻找一种在模板中显示我的 Django CMS 站点名称的方法 我创建了一个基本的 Django CMS 网站如下本指南 http docs django cms org en release 3 4 x introduction i
  • 在 Django 中使用 prefetch_lated 连接 ManyToMany 字段

    我可能遗漏了一些明显的东西 但我在连接 ManyToMany 字段以在 Django 应用程序中工作时遇到问题 我有两个模型 class Area models Model name CharField class Role models
  • 具有内联模型的 Django 管理页面加载速度非常慢

    我有一个带有单个内联模型的模型的 Django 管理页面 当内联模型有很多项目 例如 75 个 时 页面加载速度非常慢 大约 30 秒 即使我排除内联模型上的所有字段 让它只渲染名称 情况也是如此 删除内联模型会导致页面加载速度非常快 以秒
  • django 保护用户上传的文件

    如何允许用户将文件上传到他们自己的用户指定的文件夹 并且只能看到他们已上传的文件 我正在使用 django 文件传输 目前 它让我可以选择将媒体放入哪个文件 但我可以将其放入任何用户的文件中并查看每个用户的媒体 这是我的 uploads m
  • Python 中的单词匹配

    我有这个 但它正在进行部分匹配 for il in ignore list if il word in title or il word in text return True 我怎样才能只匹配整个单词 您需要将标题和文本字符串拆分为单词列
  • AWS beanstalk + Django:502 错误网关 - ModuleNotFoundError:没有名为“应用程序”的模块

    我正在尝试将 Django 项目部署到 Elastic Beanstalk 我正在遵循他们的指南 https docs aws amazon com elasticbeanstalk latest dg create deploy pyth
  • Web 客户端和移动 REST API 安全性的推荐配置

    我意识到关于这个主题有很多问题 我已经研究了几天了 我想确保我的问题尽可能具体 因为我还没有完全理解最佳方法 目前我有一个开发的 django 站点 Web 客户端大约 95 是通过 django piston json REST api
  • Django:如何测试“HttpResponsePermanentRedirect”

    我正在为我的 django 应用程序编写一些测试 在我看来 它使用 HttpResponseRedirect 重定向到其他一些网址 那么我该如何测试呢 姜戈TestCase类有一个方法assertRedirects https docs d
  • PHP 时间间隔

    我正在寻找一个看起来应该非常简单的解决方案 但似乎我不能在这里找到任何好的答案 而且我自己似乎无法让它发挥作用 我正在寻找的是设置开始时间 结束时间 然后迭代给定时间间隔之间的一组时间 例如 上午 9 00 下午 5 00 是开始时间 这些
  • TypeError at / 'str' 对象不是 django 模板中的映射

    我正在尝试在标签内设置链接 当我执行代码中所示的过程时 它给出了错误 str 对象的类型错误不是映射 它曾经工作正常 但后来决定不这样做 模板代码 a class item href 网址代码 urlpatterns path admin
  • django 模板上的 vscode html 自动套用格式

    我喜欢 VSCode 的保存自动格式功能 直到它弄乱了我的模板代码 它错误地将我的 django 模板语法格式化为一行代码 有时非常长的一行 所以不用这段代码 for row in ABCDEFGH tr for col in 123456
  • R中的for循环和if函数

    我正在用 R 中的 if 函数编写一个循环 表格如下 ID category 1 a 1 b 1 c 2 a 2 b 3 a 3 b 4 a 5 a 我想使用 for 循环和 if 函数添加另一列来计算每个分组的 ID 如下所示的计数列 I
  • Django-celery/RabbitMQ 在哪里存储任务结果?

    我的 celery 数据库后端设置是 CELERY RESULT BACKEND database CELERY RESULT DBURI mysqlite db 我使用 RabbitMQ 作为我的消息发送器 似乎没有任何结果存储在数据库中

随机推荐