如何在Django cms页面temp上显示Django模型数据

2024-04-24 07:29:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我想能够使用我的外部应用程序数据在django cms页面。 我可以使用自定义插件数据,但不能使用普通django应用程序的数据

我尝试创建视图来处理我的数据,但是如何从django cms页面调用这个视图? here正是我所要求的,但他的解释很肤浅,答案中提供的链接已不再使用。在

这是我的模型:

class ExternalArticle(models.Model):
    url = models.URLField()
    source = models.CharField(
        max_length=100,
        help_text="Please supply the source of the article",
        verbose_name="source of the article",
    )
    title = models.CharField(
        max_length=250,
        help_text="Please supply the title of the article",
        verbose_name="title of the article",
    )
    class Meta:
        ordering = ["-original_publication_date"]

    def __str__(self):
        return u"%s:%s" % (self.source[0:60], self.title[0:60])

我的模板有占位符

^{pr2}$

但我不介意在模板的任何地方显示这些数据,如果在占位符中不可能的话 我有一个自定义页面,我正在Django cms中使用。 我想显示上面的数据是Django cms页面中的一个部分 如果这个模型是从CMSPlugin继承的,那就很容易了,因为我可以在占位符中使用一个自定义插件

我希望在模板中显示模型中的数据。在


Tags: ofthe数据django模型self插件模板
3条回答

我通过以下方式实现了这一目标:

@plugin_pool.register_plugin
class ArticlesPluginPublisher(CMSPluginBase):
    model = ArticlesPluginModel
    name = _("Articles")
    render_template = "article_plugin/articles.html"
    cache = False

    def render(self, context, instance, placeholder):
        context = super(ArticlesPluginPublisher, self).render(
            context, instance, placeholder
        )
        context.update(
            {
                "articles": Article.objects.order_by(
                    "-original_publication_date"
                )
            }
        )
        return context

插件模型(ArticlesPluginModel)只是用来存储插件实例的配置。不是实际的物品。 然后,呈现程序只会将来自外部应用程序(Article)的相关文章添加到上下文中

  {% load cms_tags %}
<h1>{{ instance.poll.question }}</h1>

<form action="{% url polls.views.vote poll.id %}" method="post"> {% csrf_token %} 
        {% for choice in instance.poll.choice_set.all %}
          <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
          <label for="choice{{ forloop.counter }}">{{ choice.choice }}</label><br /> 
         {% endfor %} 

          <input type="submit" value="Vote" /> 
</form>

必须以某种方式将ExternalArticle与页面对象连接起来。例如

  • 通过将ExternalArticle定义为page extension
  • 或者用^{}
  • 或者-低技术-在ExternalArticle模型上使用^{}

相关问题 更多 >