Как отобразить данные модели django в шаблоне страницы cms django - PullRequest
0 голосов
/ 12 апреля 2019

Я хотел бы иметь возможность использовать данные внешнего приложения на странице cms django. Я могу использовать пользовательские данные плагина, но не данные из обычного приложения django

Я пытался создать представления для обработки моих данных, но как мне вызвать это представление со страниц cms django? здесь - это именно то, о чем я прошу, но его объяснение поверхностное, и ссылка в ответе больше не используется.

Вот моя модель:

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])

Мой шаблон содержит заполнители

{% load cms_tags %}

{% block title %}{% page_attribute "page_title" %}{% endblock title %}

{% block content %}
    <section class="section">
        <div class="container">

             <div class="row">
                    <!-- header-->
                    <div class="col-lg-12">
                        <div class="updates">                           
                           {% placeholder "header" %}                         
                        </div>
                    </div>
                    <!-- header end-->

            </div> <!-- end row --> 

но я не против отображать эти данные в любом месте шаблона, если это невозможно в заполнителе У меня есть пользовательская страница, которую я использую в Django CMS. Я хотел бы отобразить вышеуказанные данные в разделе на странице Cms Django Если бы эта модель наследовала от CMSPlugin, это было бы легко, потому что я мог бы использовать собственный плагин в моем заполнителе

Я ожидаю отображения данных из моей модели в шаблоне.

Ответы [ 3 ]

0 голосов
/ 15 апреля 2019

Вы должны как-то связать ExternalArticle с объектом страницы.Например,

0 голосов
/ 23 апреля 2019

Мне удалось добиться этого, выполнив следующие действия:

@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)

0 голосов
/ 12 апреля 2019
  {% 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>
...