The easy-to-use and developer-friendly CMS

Overview

django CMS

https://travis-ci.org/django-cms/django-cms.svg?branch=develop Code Climate

Open source enterprise content management system based on the Django framework and backed by the non-profit django CMS Association. Get involved in the dCA and win rewards!

Attention!

Please use the develop branch as the target for pull requests for on-going development.

Security fixes will be backported to older branches by the core team as appropriate.

Features

  • hierarchical pages
  • extensive built-in support for multilingual websites
  • multi-site support
  • draft/publish workflows
  • version control
  • a sophisticated publishing architecture, that's also usable in your own applications
  • frontend content editing
  • a hierarchical content structure for nested plugins
  • an extensible navigation system that your own applications can hook into
  • SEO-friendly URLs
  • designed to integrate thoroughly into other applications

Developing applications that integrate with and take advantage of django CMS features is easy and well-documented.

More information on our website.

Requirements

See the Python/Django requirements for the current release version in our documentation.

See the installation how-to guide for an overview of some other requirements and dependencies of the current release

Documentation

We maintain documentation for several versions of the project. Key versions are:

  • stable (default), for the current release version
  • latest, representing the latest build of the release-3.4.x branch
  • develop, representing the latest build of the develop branch

For more information about our branch policy, see Branches.

Our documentation is hosted courtesy of Read the Docs.

Developer Bounty Program

Win rewards for creating Pull Requests. Take part in our developer bounty program

Tutorial

http://docs.django-cms.org/en/latest/introduction/index.html

Quick Start

You can use the django CMS installer:

$ pip install --upgrade virtualenv
$ virtualenv env
$ source env/bin/activate
(env) $ pip install djangocms-installer
(env) $ mkdir myproject && cd myproject
(env) $ djangocms -f -p . my_demo
(env) $ python manage.py

Demo

Try demo with Divio Cloud

Getting Help

Please head over to our Slack channel or our discourse forum for support.

Commercial support

This project is backed by the django CMS Association. If you need help implementing or hosting django CMS, please contact us: [email protected].

django CMS Association

The django CMS Association is a non-profit organization that was founded in 2020 with the goal to drive the success of django CMS, by increasing customer happiness, market share and open-source contributions. We provide infrastructure and guidance for the django CMS project.

The non-profit django CMS Association is dependent on donations to fulfill its purpose. The best way to donate is to become a member of the association and pay membership fees. The funding will be funneled back into core development and community projects.

Join the django CMS Association.

Credits

Comments
  • Can't move pages

    Can't move pages

    Can't move pages in admin. Throws an internal server error (500).

    Traceback:
    File "/var/www/blank/www/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
      132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
    File "/var/www/blank/www/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
      110.                     response = view_func(request, *args, **kwargs)
    File "/var/www/blank/www/local/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
      57.         response = view_func(request, *args, **kwargs)
    File "/var/www/blank/www/local/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner
      233.             return view(request, *args, **kwargs)
    File "/var/www/blank/www/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper
      34.             return bound_func(*args, **kwargs)
    File "/var/www/blank/www/local/lib/python2.7/site-packages/django/views/decorators/http.py" in inner
      45.             return func(request, *args, **kwargs)
    File "/var/www/blank/www/local/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func
      30.                 return func.__get__(self, type(self))(*args2, **kwargs2)
    File "/var/www/blank/www/local/lib/python2.7/site-packages/django/utils/decorators.py" in inner
      145.                     return func(*args, **kwargs)
    File "/var/www/blank/www/local/lib/python2.7/site-packages/cms/admin/pageadmin.py" in move_page
      857.         page.move_page(target, position)
    File "/var/www/blank/www/local/lib/python2.7/site-packages/cms/models/pagemodel.py" in move_page
      217.         moved_page = self.move(target, pos=position)
    File "/var/www/blank/www/local/lib/python2.7/site-packages/cms/models/pagemodel.py" in move
      1237.         super(Page, self).move(target, pos)
    File "/var/www/blank/www/local/lib/python2.7/site-packages/treebeard/mp_tree.py" in move
      1037.         return MP_MoveHandler(self, target, pos).process()
    File "/var/www/blank/www/local/lib/python2.7/site-packages/treebeard/mp_tree.py" in process
      444.         if self.target.is_descendant_of(self.node):
    
    Exception Type: AttributeError at /admin/cms/page/250/move-page/
    Exception Value: 'NoneType' object has no attribute 'is_descendant_of'
    

    Django Version: 1.8.4 Affected versions: django-cms==3.1.1 and django-cms==3.1.4.dev

    blocker kind: bug status: has patch status: accepted 
    opened by philippeowagner 45
  • WiP Django 1.6 support

    WiP Django 1.6 support

    While Django 1.6 is still unreleased, we can try to see what's going to happen. Still a work in progress and only addresses python-level issues. All dependencies should be 1.6 ready now. ~~Biggest issues at the moment are django-reversion (PR opened for 1.6 support) and django-mptt support. djangocms-text-ckeditor (opened PR for support) and django-hvad looks more easy to fix. 1.6 support fixed in django-hvad.~~ ATM code is django 1.4 compatible. Django 1.6 added to build matrix to track the progress.

    opened by yakky 45
  • menu system does not allow some menu strategies for touch devices

    menu system does not allow some menu strategies for touch devices

    Bootstrap 3 introduced a navigation bar, where on mouse over, the sub/pulldown-menu does not automatically pop up. This brought to some controversial discussions on the Bootstrap mailing list, but considering the importance of touch devices (no mouse over possible), I agree with dropping support for this.

    The menu system in django-cms is built in a way, which in practice requires the mouse over effect. The reason is, that one can not create a CMS "page", whose purpose is to only act as a node in the menu tree, without offering any page content.

    For instance, consider the menu system of a typical site build with Bootstrap 3: https://www.angularjs.org/ . Here the main menu contains items: 'Learn', 'Develop', 'Discuss', which actually do not offer any page content. Now, assume one of the above items shall additionally offer some page content. This can be achieved by adding a copy of an item from the main menu, into its own pulldown menu. Here, the first click onto the main menu's item opens the pulldown menu. Then, a second click on the copy of that item, opens the requested page.

    In django-CMS we could use the flag "in menu", but when this is turned off, then all menu items below that item are unselectable, and that's definitely not want we want.

    My proposal is to add another magic template. Currently django-cms has a built-in magic template "Inherit from Parent". We could add another magic template, say "Empty Page", which then tells the menu system to act as a clickable menu item, but not offering any page content. Then, while building the menu, the template tag menu can distinguish a page acting as pure navigation node from a real cms page.

    If this proposal is accepted, I can implement it.

    EDIT (by ojii): Note, the title of this issue was changed by me.

    kind: enhancement component: menus 
    opened by jrief 43
  • Add feature change

    Add feature change "?edit" variable (and "?edit_off", "?build") to custom

    I add little changes for may changing "?edit" variable (and "?edit_off", "?build") to custom variable (eq. "?admin_on") in project started with Django-CMS. I need it's for hidden login form on sites for "hackers" and make happy our customer (change variable to company name).

    component: frontend 
    opened by itcrab 36
  • Adding support for custom user models

    Adding support for custom user models

    This pull request is related to #1798 and #1916.

    I've updated the documentation, tests, and relevant parts of the code to support custom user models as long as the name of the model is User. In addition to a simple customuserapp.User model which adds a single field, I also included a emailuserapp.User which uses the email field as USERNAME_FIELD.

    Lastly, I updated the test runner in develop.py to support a new command line arguement, --user, which allows for specifying the user model. By default, django.contrib.auth.User is used.

    Tested with Django 1.4, 1.5, and 1.6.

    opened by tanderegg 35
  • Missing migration with Django 1.7 (DjangoCMS 3.0.6, up to 3.0.12)

    Missing migration with Django 1.7 (DjangoCMS 3.0.6, up to 3.0.12)

    Starting a project with Django 1.7 and DjangoCMS 3.0.6 will result in Django's makemigrations creating another migration file for the cms app. You can see the the created migration file here:

    http://paste.awesom.eu/ZnyI

    This gets annoying when creating custom plugins which then automatically depend on the locally created 0004 cms migration: It breaks deployment on a remote machine. My current fix is to manually edit the custom plugins' migration files to depend on the shipped 0003 cms migration.

    I noticed that Django's migration system is more sensitive to changes than South, so could you please run makemigrations on all your cms apps (noticed a similar issue with djangocms_link) before the next release? Thanks!

    status: has patch status: accepted kind: cleanup 
    opened by ghost 33
  • CMSAttachMenu failing to register after 3.0.12

    CMSAttachMenu failing to register after 3.0.12

    I noticed that after upgrading from 3.0.10 to 3.0.12 that a CMSAttachMenu was not registering on a page. It would periodically appear and disappear. In the advanced settings sometimes I would see zero, one, or two options for the same menu. I only have one CMSAttachMenu menu defined in a single app in my project. I attempted to delete and recreate the page to no avail. I noticed in the database, if there was only one option available in advanced settings, the page record showed UserMenu for navigation_extenders. If there were two options, it would be UserMenu:190 or UserMenu:193 depending which option I selected.

    Ultimately I reverted to 3.0.10 and the issue went away.

    My menu class:

    from menus.base import NavigationNode
    from cms.menu_bases import CMSAttachMenu
    from menus.menu_pool import menu_pool
    from django.utils.translation import ugettext_lazy as _
    
    class UserMenu(CMSAttachMenu):
    
        name = _('User Menu')
    
        def get_nodes(self, request):
            nodes = []
    
            menu_id = 1
            root_id = menu_id
    
            # root node
            greeting = 'Hello, {0}'.format(request.user.get_full_name() or request.user) if request.user.is_authenticated() else 'Log in'
            title = '<i class="fa fa-user hidden-xs hidden-md hidden-lg"></i><span class="hidden-sm">{0}</span>'
            n = NavigationNode(title.format(greeting), "/user/", menu_id)
            nodes.append(n)
    
            # anonymous menus
            menu_id += 1
            n = NavigationNode(_('Log in'), "/login/", menu_id, root_id, attr={'visible_for_authenticated':False})
            nodes.append(n)
    
            menu_id += 1
            n = NavigationNode(_('Register'), "/register/", menu_id, root_id, attr={'visible_for_authenticated':False})
            nodes.append(n)
    
            menu_id += 1
            n = NavigationNode(_('Help'), "/help/ticket/new/guest/", menu_id, root_id, attr={'visible_for_authenticated':False})
            nodes.append(n)
    
            # authenticated menus
            menu_id += 1
            dashboard_id = menu_id
            n = NavigationNode(_('Dashboard'), "/user/dashboard/", menu_id, root_id, attr={'visible_for_anonymous':False})
            nodes.append(n)
    
            menu_id += 1
            n = NavigationNode(_('Log out'), "/logout/", menu_id, root_id, attr={'visible_for_anonymous':False})
            nodes.append(n)
    
            # user section dashboard sub-menu
            menu_id += 1
            n = NavigationNode(_('Dashboard'), "/user/dashboard/", menu_id, dashboard_id, attr={'visible_for_anonymous':False})
            nodes.append(n)
    
            menu_id += 1
            n = NavigationNode(_('Projects'), "/user/projects/", menu_id, dashboard_id, attr={'visible_for_anonymous':False})
            nodes.append(n)
    
            menu_id += 1
            n = NavigationNode(_('Help Desk'), "/user/help/", menu_id, dashboard_id, attr={'visible_for_anonymous':False})
            nodes.append(n)
    
            menu_id += 1
            n = NavigationNode(_('Profile'), "/user/profile/", menu_id, dashboard_id, attr={'visible_for_anonymous':False})
            nodes.append(n)
    
            return nodes
    
    menu_pool.register_menu(UserMenu)
    
    blocker kind: bug component: menus status: accepted 
    opened by mrhanlon 32
  • Replace develop.py with manage.py (using django-app-manage/django-better-test)

    Replace develop.py with manage.py (using django-app-manage/django-better-test)

    This Pull Request proposes to remove develop.py (and it's related functions in cms.test_utils) with a file called manage.py that can be used like a manage.py file in a Django project.

    While develop.py works fine, it is a lot of code that has nothing to do with the actual CMS to maintain and it only supports a few commands, new commands need to be added one-by-one. django-app-manage allows to externalize that problem. It's also a project that could be used by 3rd party cms plugins, making testing easier there (this obviously doesn't require this PR to be merged, all this would do is put some weight behind it).

    develop.py also set up the magic --parallel and --isolated flags for the test command, but those flags resulted in odd output. For this, I wrote django-better-test which provides those two flags, but keeps the output nice and tidy.

    django-better-test also is a lot smarter about distributing the load of the tests (by keeping track of how long each test method takes), has a --failed flag to only re-run failed tests, a --retest flag to re-use the last configuration and more exciting things!

    TODO:

    • [x] add manage.py
    • [x] remove develop.py
    • [x] remove old code from cms.test_utils

    References

    https://github.com/ojii/django-app-manage https://github.com/ojii/django-better-test

    status: ready for review kind: enhancement 
    opened by ojii 30
  • Fixes/flexible parent+child classes

    Fixes/flexible parent+child classes

    In django-CMS version 3.4, the method to determine if plugins are allowed as child and/or parent plugins, has changed a lot.

    This is causing major problems in djangocms-cascade, since there I have to determine possible relationships dynamically. This means that depending on where inside the placeholder tree a plugin is located, possible parent and/or child relations can be allowed or denied.

    Therefore I looked for alternatives and one proposal to fix it, would be to optionally pass in the current plugin instance to the classmethods CMSPlugin.get_child_classes(...) and CMSPlugin.get_parent_classes(...). Additionally I have to deactivate the placeholder caching for these plugins, since the list of allowed child- and parent-classes then has to be build dynamically.

    This PR depends on #5799. If we can agree on it, I'll add some documentation and tests.

    status: ready for review kind: enhancement 
    opened by jrief 29
  • Consider to replace Compass against libsass

    Consider to replace Compass against libsass

    This would have many advantages:

    • Faster compilation times, some say up to 11x faster.
    • No need for Ruby gems and that stuff, everything is installable through pip.
    • Files ending in .scss are referenced directly in the templates, rather than having to refer an autogenerated css-file.
    • Only one file has to be revisioned in git: the scss-file. The css file is generated on the fly and kept in the compressors cache.
    • No daemon, watching a subtree of the filesystem, must be started. The library django-compress and libsass will handle everything for us.

    For more information refer to this post: https://groups.google.com/forum/#!topic/django-cms/KO7K1iMIjmo

    component: frontend kind: enhancement status: accepted 
    opened by jrief 29
  • Per-page X-Frame-Options/Clickjacking protection

    Per-page X-Frame-Options/Clickjacking protection

    This provides a Advanced Setting which allows you to specify a specific X-Frame-Option for a page. The options for X-Frame-Options are:

    • Inherit from parent
    • Allow
    • Deny
    • same origin (this website only)

    The default is inherit from parents.

    needs design decision 
    opened by tsyesika 29
  • fix: Update diffDOM to the latest version

    fix: Update diffDOM to the latest version

    Description

    Work in progress on https://github.com/django-cms/django-cms/issues/7460.

    Upgrading diffDOM seems to resolve the issue, however, is not compatible with UglifyJS.

    Related resources

    The issue seems to be related to variable naming in diffDOM:

    image

    I belive it is due to the variable called node:

    https://github.com/fiduswriter/diffDOM/blob/v4.2.8/src/diffDOM/dom/fromVirtual.js#L2

    Which UglifyJS does not like. I am seeking help with getting this fix across the finish line.

    Checklist

    • [x] I have opened this pull request against develop
    • [x] I have read the contribution guidelines and I have joined #workgroup-pr-review on Slack to find a “pr review buddy” who is going to review my pull request.
    • [ ] I have added or modified the tests when changing logic
    • [ ] I have followed the conventional commits guidelines to add meaningful information into the changelog
    opened by petrklus 0
  • [BUG] `diff-dom` freezing on CMS content refresh

    [BUG] `diff-dom` freezing on CMS content refresh

    Description

    We are experiencing issues with the CMS refresh. For certail plugin configurations and post-plugin modification, the browser tab first freezes, later to crash due to out of memory error. We have confirmed the same on Google Chrome / Mozilla Firefox.

    Steps to reproduce

    1. Trigger content/structure board refresh
    2. Tab crashes

    Expected behaviour

    The page content to update.

    Actual behaviour

    The diff between incoming document and actual document freezes up:

    https://github.com/django-cms/django-cms/blob/develop/cms/static/cms/js/modules/cms.structureboard.js#L1291

    Only tab restart fixes the issue.

    Screenshots

    image

    Additional information (CMS/Python/Django versions)

    Django CMS 3.11.0 or 1, Django 3.2.

    Tested on Mozilla Firefox and Google Chrome

    Do you want to help fix this issue?

    We have looked into this further and the issue seems to be down to DiffDOM version 2.5.1. We have tried upgrading to the latest version 4.2.8, which works in debug mode, however, is not compatible with the current UglifyJS config.

    • [x] Yes, I want to help fix this issue and I will join #workgroup-pr-review on Slack to confirm with the community that a PR is welcome.
    • [ ] No, I only want to report the issue.
    opened by petrklus 0
  • [BUG] Missing requirement `packaging` in 3.11.1

    [BUG] Missing requirement `packaging` in 3.11.1

    Description

    When upgrading to Django CMS 3.11.1, the following error is showing:

     ---> Running in 67cb7a787162
    Traceback (most recent call last):
      File "/app/manage.py", line 7, in <module>
        startup.manage(path=os.path.dirname(os.path.abspath(__file__)))
      File "/usr/local/lib/python3.9/site-packages/aldryn_django/startup.py", line 11, in manage
        utility.execute()
      File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 395, in execute
        django.setup()
      File "/usr/local/lib/python3.9/site-packages/django/__init__.py", line 24, in setup
        apps.populate(settings.INSTALLED_APPS)
      File "/usr/local/lib/python3.9/site-packages/django/apps/registry.py", line 114, in populate
        app_config.import_models()
      File "/usr/local/lib/python3.9/site-packages/django/apps/config.py", line 301, in import_models
        self.models_module = import_module(models_module_name)
      File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
      File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
      File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
      File "<frozen importlib._bootstrap_external>", line 850, in exec_module
      File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
      File "/usr/local/lib/python3.9/site-packages/cms/models/__init__.py", line 4, in <module>
        from .placeholdermodel import *  # nopyflakes
      File "/usr/local/lib/python3.9/site-packages/cms/models/placeholdermodel.py", line 14, in <module>
        from cms.utils import get_language_from_request, get_site_id, permissions
      File "/usr/local/lib/python3.9/site-packages/cms/utils/permissions.py", line 13, in <module>
        from cms.utils.compat.dj import available_attrs
      File "/usr/local/lib/python3.9/site-packages/cms/utils/compat/__init__.py", line 4, in <module>
        from packaging.version import Version
    ModuleNotFoundError: No module named 'packaging'
    

    The error refers here: https://github.com/django-cms/django-cms/blob/3.11.1/cms/utils/compat/init.py#L4

    Steps to reproduce

    1. Install Django CMS 3.11.1
    2. Run collectstatic

    Screenshots

    Additional information (CMS/Python/Django versions)

    Python 3.9, Django 3.2

    kind: bug 
    opened by petrklus 7
  • ci: Add deprecations for functions not available in cms v4

    ci: Add deprecations for functions not available in cms v4

    Description

    This PR is work in progress and adds deprecation warnings for functions and methods which will be removed in django CMS v4.

    Related resources

    • #...
    • #...

    Checklist

    • [x] I have opened this pull request against develop
    • [x] I have added or modified the tests when changing logic
    • [x] I have followed the conventional commits guidelines to add meaningful information into the changelog
    • [x] I have read the contribution guidelines and I have joined #workgroup-pr-review on Slack to find a “pr review buddy” who is going to review my pull request.
    opened by fsbraun 0
  • ci: Release/3.11.x

    ci: Release/3.11.x

    Description

    Merge release 3.11.1 back into develop.

    Related resources

    • #...
    • #...

    Checklist

    • [x] I have opened this pull request against develop
    • [x] I have added or modified the tests when changing logic
    • [x] I have followed the conventional commits guidelines to add meaningful information into the changelog
    • [x] I have read the contribution guidelines and I have joined #workgroup-pr-review on Slack to find a “pr review buddy” who is going to review my pull request.
    opened by fsbraun 0
  • KeyError at /xxxxx - After removing a plugin

    KeyError at /xxxxx - After removing a plugin

    Description

    I have a plugin NavbarPlugin that I coded inside cms_plugins.py.

    • The code :
    @plugin_pool.register_plugin
    class NavbarPlugin(CMSPluginBase):
        model = CMSPlugin
        render_template = "frontend/inviso_plugins_templates/menu/inviso_navbar.html"
        name="Navbar plugin"
        module = "Inviso"
        def render(self, context, instance, placeholder):
            context = super().render(context, instance, placeholder)
            return context
    

    I used this plugin inside a page that I created, then it worked well.

    Then I decided to delete the plugin from the code inside cms_plugins.py, but I forgot to remove it from the page in the first place. Then I got an error like :

    KeyError at /actualites/
    'NavbarPlugin'
    

    I decided then to undo the suppression of the plugin from cms_plugins.py, but then it turned out that there's always the same error again and again. I searched on the internet and all but I didn't got what I searched for. Thanks

    Steps to reproduce

    • Create a plugin in cms_plugins.py
    • Use the plugin in a page
    • Delete the plugin code in cms_plugins.py
    • Refresh the page (or the project)
    • Getting an error
    • Rewritting the same plugin code in cms_plugins.py
    • Refresh the page (or the project)

    Expected behaviour

    After rewritting the plugin code in cms_plugins.py, the plugin should be seen by the application and no errors should occur anymore.

    Actual behaviour

    The same error that occurs after deleting the plugin code from cms_plugins.py persists

    Screenshots

    Additional information (CMS/Python/Django versions)

    Do you want to help fix this issue?

    • [ ] Yes, I want to help fix this issue and I will join #workgroup-pr-review on Slack to confirm with the community that a PR is welcome.
    • [ ] No, I only want to report the issue.
    status: marked for rejection 
    opened by cedricrabarijohn 1
Releases(4.1.0rc1)
  • 4.1.0rc1(Dec 31, 2022)

    4.1.0rc1

    • Django 4.1 and 4.0 support
    • Python 3.10 support
    • Fix bug that broke page tree if it contained empty page content
    • Fix bug that created new page content not in the displayed language but the browser language
    • feat: graceful plugin exceptions. Exceptions when rendering a plugin are caught and logged
    • Remove outdated Django setting SEND_BROKEN_LINK_EMAILS
    • Introduce dropdown menus in the page tree for status indicators
    • add release scripts for develop-4 branch (#7466) (ddbc99a53)
    Source code(tar.gz)
    Source code(zip)
  • 3.11.1(Dec 13, 2022)

    Features:

    • add Python 3.11 support for Django CMS (#7422) (3fe1449e6) -- Vinit Kumar
    • Support for Django 4.1 (#7404) (777864af3) -- Fabian Braun
    • Add support for tel: and mailto: URIs in Advanced Page Settings redirect field (#7370) (0fd058ed3) -- Mark Walker
    • Improved dutch translations -- Stefan van den Eertwegh

    Bug Fixes:

    • Prefer titles matching request language (#7144) (06c9a85df) -- Micah Denbraver
    • Adds a deprecation warning for SEND_BROKEN_LINK_EMAILS (#7420) (d38f4a1cc) -- Fabian Braun
    • Added deprecation warning to get_current_language() (#7410) (2788f75e6) -- Mark Walker
    • CMS check management command fixed [#7412] (#7413) (dcf394bd5) -- ton77v
    • Changing color scheme resets session settings to defaults (#7407) (fcfe77f63) -- Fabian Braun
    • Clear page permission cache on page create (#6866) (e59c179dd) -- G3RB3N
    • Unlocalize page and node ids when rendering the page tree in the admin (#7188) (9e3c57946) -- Marco Bonetti
    • Allow partially overriding CMS_CACHE_DURATIONS (#7339) (162ff8dd8) -- Qijia Liu
    • CMS check management command fixed [#7386] (cdcf260aa) -- Marco Bonetti
    • default light mode (#7381) (abc6e6c5b) -- viliammihalik
    • Added language to page cache key (#7354) (d5a9f49e6) -- Mark Walker

    Refactoring and Cleanups:

    • Move js API functions to CMS.Helpers to make them available also to the admin site (#7384) (a7f8cd44f) -- Fabian Braun

    Statistics:

    This release was created with the help of the following contributors (in alphabetical order):

    • Fabian Braun
    • G3RB3N
    • Marco Benetti
    • Mark Walker
    • Micah Denbraver
    • Qijia Liu
    • Stefan van den Eertwegh
    • villiammihalik
    • Vinit Kumar

    With the review help of the following contributors:

    • Cage Johnson
    • Christian Clauss
    • Conrad
    • Dapo Adedire
    • Fabian Braun
    • Florian Delizy
    • G3RB3N
    • Hussein Srour
    • Marco Bonetti
    • Mark Walker
    • Micah Denbraver
    • Pankrat
    • Patrick Mazulo
    • Qijia Liu
    • Shivan Sivakumaran
    • Simon Krull
    • Vinit Kumar
    • code-review-doctor
    • dependabot[bot]
    • fsbraun
    • jefe
    • ton77v
    • viliammihalik
    • wesleysima

    Thanks to all contributors for their efforts!

    Source code(tar.gz)
    Source code(zip)
  • 3.11.1rc1(Nov 14, 2022)

    Features:

    • add Python 3.11 support for Django CMS (#7422) (3fe1449e6) -- Vinit Kumar
    • Support for Django 4.1 (#7404) (777864af3) -- Fabian Braun
    • Add support for tel: and mailto: URIs in Advanced Page Settings redirect field (#7370) (0fd058ed3) -- Mark Walker
    • Improved dutch translations -- Stefan van den Eertwegh

    Bug Fixes:

    • Prefer titles matching request language (#7144) (06c9a85df) -- Micah Denbraver
    • Adds a deprecation warning for SEND_BROKEN_LINK_EMAILS (#7420) (d38f4a1cc) -- Fabian Braun
    • Added deprecation warning to get_current_language() (#7410) (2788f75e6) -- Mark Walker
    • CMS check management command fixed [#7412] (#7413) (dcf394bd5) -- ton77v
    • Changing color scheme resets session settings to defaults (#7407) (fcfe77f63) -- Fabian Braun
    • Clear page permission cache on page create (#6866) (e59c179dd) -- G3RB3N
    • Unlocalize page and node ids when rendering the page tree in the admin (#7188) (9e3c57946) -- Marco Bonetti
    • Allow partially overriding CMS_CACHE_DURATIONS (#7339) (162ff8dd8) -- Qijia Liu
    • CMS check management command fixed [#7386] (cdcf260aa) -- Marco Bonetti
    • default light mode (#7381) (abc6e6c5b) -- viliammihalik
    • Added language to page cache key (#7354) (d5a9f49e6) -- Mark Walker

    Refactoring and Cleanups:

    • Move js API functions to CMS.Helpers to make them available also to the admin site (#7384) (a7f8cd44f) -- Fabian Braun
    Source code(tar.gz)
    Source code(zip)
Owner
django CMS Association
The django CMS Association coordinates and funds the long-term development of the django CMS platform. Join us!
django CMS Association
A Django-based CMS with a focus on extensibility and concise code

FeinCMS - An extensible Django-based CMS When was the last time, that a pre-built software package you wanted to use got many things right, but in the

FeinCMS 847 Jan 7, 2023
Kotti is a high-level, Pythonic web application framework based on Pyramid and SQLAlchemy. It includes an extensible Content Management System called the Kotti CMS.

Kotti Kotti is a high-level, Pythonic web application framework based on Pyramid and SQLAlchemy. It includes an extensible Content Management System c

Kotti 394 Jan 7, 2023
Ella is a CMS based on Python web framework Django with a main focus on high-traffic news websites and Internet magazines.

Ella CMS Ella is opensource CMS based on Django framework, designed for flexibility. It is composed from several modules: Ella core is the main module

null 295 Oct 16, 2022
An open source CMS, in python and integrable in Django

Python CMS based on the Django Framework

Titouan Bénard 0 Sep 10, 2021
CMS framework for Django

Created by Stephen McDonald Overview Mezzanine is a powerful, consistent, and flexible content management platform. Built using the Django framework,

Stephen McDonald 4.6k Dec 29, 2022
The Plone CMS: root integration package

About Plone Plone is a mature, secure and user-friendly Content Management System (CMS). Plone - and the Open Source community behind it - aggregates

Plone Foundation 200 Jan 8, 2023
Random tarot card generator + rudimentary Django CMS

TAROT JUICER This is a rudimentary Django-based CMS which dynamically presents tarot-related content placed onto unconventional but familiar contexts

Kyle Rafa Lazaro 7 Apr 26, 2022
A python open source CMS scanner that automates the process of detecting security flaws of the most popular CMSs

CMSmap CMSmap is a python open source CMS scanner that automates the process of detecting security flaws of the most popular CMSs. The main purpose of

RazzorBack 1 Oct 31, 2021
Django CMS Project for quicksetup with minimal installation process.

Django CMS Project for quicksetup with minimal installation process.

Dipankar Chowdhury 3 Mar 24, 2022
A plugin for Wagtail CMS, to have Icon Blocks (Fontawesome support)

WAGTAIL ICONIFY Library developed for Wagtail CMS, its purpose is to provide icon blocks from various libraries Special thanks to Alex Gleason, as wel

null 2 Jun 7, 2022
Django e-commerce website with Advanced Features and SEO Friendly

MyTech® - Your Technology Django e-commerce website with Advanced Features and SEO Friendly Images and Prices are only used for Demo purpose and does

null 28 Dec 21, 2022
ConnectLearn is an easy to use and deploy Open-Source Project meant to make it easier for the right students to find the right teachers online.

ConnectLearn ConnectLearn is an easy to use and deploy Open-Source Project meant to make it easier for the right students to find the right teachers o

Aditya 5 Oct 24, 2021
django blog - complete customization and ready to use with one click installer

django-blog-it Simple blog package developed with Django. Features: Dynamic blog articles Blog pages Contact us page (configurable) google analytics S

MicroPyramid 220 Sep 18, 2022
wger Workout Manager is a free, open source web application that helps you manage your personal workouts, weight and diet plans and can also be used as a simple gym management utility.

wger (ˈvɛɡɐ) Workout Manager is a free, open source web application that helps you manage your personal workouts, weight and diet plans and can also be used as a simple gym management utility.

wger Project 2k Dec 29, 2022
Backend routes and database for an abstract theoretical app that relates a database of courses, users, and assignments.

Backend routes and database for an abstract theoretical app that relates a database of courses, users, and assignments.

Sean Wiesner 0 Dec 27, 2021
A Django content management system focused on flexibility and user experience

Wagtail is an open source content management system built on Django, with a strong community and commercial support. It's focused on user experience,

Wagtail 13.8k Jan 1, 2023
A modular, high performance, headless e-commerce platform built with Python, GraphQL, Django, and ReactJS.

Saleor Commerce Customer-centric e-commerce on a modern stack A headless, GraphQL-first e-commerce platform delivering ultra-fast, dynamic, personaliz

Mirumee Labs 17.8k Jan 7, 2023
A curated list of awesome packages, articles, and other cool resources from the Wagtail community.

Awesome Wagtail A curated list of awesome packages, articles, and other cool resources from the Wagtail community. Wagtail is a Python CMS powered by

Springload 1.7k Jan 3, 2023
Journey is a journaling app where users can create their own journal and entries in it!

Journey is a journaling app where users can create their own journal and entries in it!

Hieu Ma 8 Dec 12, 2021