The base classes to create a page which can display django-fluent-contents models.

The API to interface with django-fluent-contents is public, and documented for this reason. In fact, this module is just a tiny bridge between the page type plugins and the django-fluent-pages API. It can be used to create custom page types that display ContentItem objects.

The following parts are provided:

These classes can be imported from their respective subpackages:

from fluent_pages.integration.fluent_contents.admin import FluentContentsPageAdmin
from fluent_pages.integration.fluent_contents.models import FluentContentsPage
from fluent_pages.integration.fluent_contents.page_type_plugins import FluentContentsPagePlugin

The FluentContentsPageAdmin class

class fluent_pages.integration.fluent_contents.admin.FluentContentsPageAdmin(model, admin_site, *args, **kwargs)

This admin is a small binding between the pagetypes of django-fluent-pages and page contents of django-fluent-contents.

Use {% extends base_change_form_template %} in your page template, and it will all work properly.


By default, all plugins are allowed, unless a placeholder puts a limit on this. The page will load much faster if the plugin types are limited globally here.

get_placeholder_data(request, obj=None)

Read the placeholder data to display in the template. This reads placeholder_layout and placeholder_layout_template. It can be overwritten to return the layout depending on the page or request.

Tip: if the object is given, this could read obj.plugin.get_render_template(request, obj) too.

get_translation_objects(request, language_code, obj=None, inlines=True)

Make sure the translated ContentItem objects are also deleted when a translation is removed.

all_allowed_plugins = None

A static list of all allowed plugin names. This is read by get_all_allowed_plugins()

placeholder_layout = None

A fixed defined placeholder layout, which can be defined statically. This should be a list of PlaceholderData objects.

placeholder_layout_template = None

A fixed template, from which the placeholder data can be read. The placeholder_layout will be read automatically from the template.

The FluentContentsPage class

class fluent_pages.integration.fluent_contents.models.FluentContentsPage(*args, **kwargs)

The base model to create a Page object which hosts placeholders and content items.

  • id (AutoField) – Id
  • polymorphic_ctype (ForeignKey to ContentType) – Polymorphic ctype
  • parent (PageTreeForeignKey to UrlNode) – Parent. You can also change the parent by dragging the page in the list.
  • parent_site (ForeignKey to Site) – Parent site
  • status (CharField) – Status
  • publication_date (DateTimeField) – Publication date. When the page should go live, status must be “Published”.
  • publication_end_date (DateTimeField) – Publication end date
  • in_navigation (BooleanField) – Show in navigation
  • in_sitemaps (BooleanField) – Include in search engine sitemaps
  • key (SlugField) – Page identifier. A unique identifier that is used for linking to this page.
  • author (ForeignKey to User) – Author
  • creation_date (DateTimeField) – Creation date
  • modification_date (DateTimeField) – Last modification
  • lft (PositiveIntegerField) – Lft
  • rght (PositiveIntegerField) – Rght
  • tree_id (PositiveIntegerField) – Tree id
  • level (PositiveIntegerField) – Level
  • urlnode_ptr (OneToOneField to UrlNode) – Urlnode ptr
  • placeholder_set (PlaceholderRelation) – Placeholder set
  • contentitem_set (ContentItemRelation) – Contentitem set
create_placeholder(slot, role='m', title=None)

Create a placeholder on this page.

To fill the content items, use ContentItemModel.objects.create_for_placeholder().

Return type:Placeholder

Return all content items of the page, which are stored in the given slot name. :rtype: ContentItemQuerySet


Return a placeholder that is part of this page. :rtype: Placeholder


Model field: contentitem set, accesses the M2M FluentContentsPage model.


Model field: placeholder set, accesses the M2M FluentContentsPage model.

The FluentContentsPagePlugin class

class fluent_pages.integration.fluent_contents.page_type_plugins.FluentContentsPagePlugin

Base plugin to render a page with content items.


alias of fluent_pages.integration.fluent_contents.admin.FluentContentsPageAdmin

get_render_template(request, fluentpage, **kwargs)

Overwritten to automatically pick up the template used in the admin.

model = None

Defines the model to use to store the custom fields. It must derive from FluentContentsPage.