django CMS stories application - Tell your story in multilingual posts, using the full power of django CMS placeholders.
djangocms-stories provides a lean foundation for storytelling that can be composed with other specialized django CMS applications, such as djangocms-versioning or djangocms-moderation.
Features
Frontend editing using django CMS frontend editor
Placeholder or optionally simpler TextField-based content editing
Multilingual support using django-parler
Multisite (posts can be visible in one or more Django sites on the same project)
Hooks into your page tree anywhere
Configurable permalinks, user navigation, template sets, …
Multiple instaces per site (e.g., blog, news, stories)
Django sitemap framework
django CMS Wizard integration
Supports djangocms-versioning and djangocms-moderation
Installation
To install the latest version directly from GitHub, run:
pip install djangocms-stories djangocms-text
Add djangocms_stories and djangocms_text to your INSTALLED_APPS in your Django project’s settings.py:
INSTALLED_APPS = [
# ...
'djangocms_text', # required
'djangocms_stories',
'parler', # if not already included
'sortedm2m', # if not already included
# For now, but probably not needed in the future
'taggit',
'taggit_autosuggest',
'meta',
# ...
]
To use taggit’s autosuggest feature, add their URLS in urls.py:
urlpatterns += [path('taggit_autosuggest/', include('taggit_autosuggest.urls'))]
Migrating from djangocms-blog
Migrate from djangocms-blog by following the steps below. There is test coverage for the migration process - nevertheless be sure to backup your database before proceeding.
Uninstall djangocsms-blog: pip uninstall djangocms-blog
Install djangocms-stories pip install djangocms-stories
Add "djangocms_stories" to your installed apps. Do not remove djangocms-blog.
Run ./manage.py migrate djangocms_stories. This in migration 0002 will move existing content from djangocms-blog to djangocms-stories and delete djangocms-blogs database tables.
Remove "djangocms_blog" from your installed apps.
To be on the safe side, check that the app hooks in the advanced settings your blog pages have been updated.
Custom templates will need manual updating, since the underlying model structure has changed:
post contains the following fields: related, main_image, author, date, categories, tags
post_content contiains the following per-language fields: title, subtitle, slug, content, media, and post, the reference to the Post object.
Some improvements for developers are included:
You now can use the {% placeholder %} template tag in the post_detail.html template to render any placeholder. {% render_placeholder post_content.content %} and {% render_placeholder post_content.media %} are still available, but you can now use {% placeholder "new_content" %} to, say, add additional placeholders.
Contributing
Because this is a an open-source project, we welcome everyone to get involved in the project and receive a reward for their contribution. Become part of a fantastic community and help us make django CMS the best CMS in the world.
We’ll be delighted to receive your feedback in the form of issues and pull requests. Before submitting your pull request, please review our contribution guidelines.
The project makes use of git pre-commit hooks to maintain code quality. Please follow the installation steps to get pre-commit setup in your development environment.
We’re grateful to all contributors who have helped create and maintain this package. Contributors are listed at the contributors section.
One of the easiest contributions you can make is helping to translate this addon on Transifex.
Credits
djangocms-stories is inspired by Nephila’s excellent djangocms-blog, with the intent to bring to align it with django CMS’s new philosophy since version 4: “The design philosophy of django CMS is to solve something complex with many simple things.”
Release files for djangocms-stories 0.9.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| djangocms_stories-0.9.3.tar.gz | 383.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| djangocms_stories-0.9.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 783.9 kB
Release files / djangocms_stories-0.9.3.tar.gz
| Download URL | djangocms_stories-0.9.3.tar.gz |
|---|---|
| Size | 383.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
36f35cc564a62dc1a09622924cdca77023f1f8656586afab251402967218ef36
|
|
BLAKE2b-256 checksum How to use checksums |
26cb03d80e48b3076262192e993b81b8ab095f7106df09063988bfdb4310752a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 28, 2026.
Transparency logRelease files / djangocms_stories-0.9.3-py3-none-any.whl
| Download URL | djangocms_stories-0.9.3-py3-none-any.whl |
|---|---|
| Size | 400.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8b913f33641bace648b19f6a7d65b2a90fae59fe26dd5a2108c1272236554343
|
|
BLAKE2b-256 checksum How to use checksums |
34fc287db74ff20fe745b750603e6f33d058655f04f324b3be393efe4d14b0dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 28, 2026.
Transparency log