Introduction to django CMS


Introduction to django CMS

In this article we will:

  • Learn about django CMS
  • Analyze its features
  • Setup an application with django CMS with full installation guidelines

About django CMS

django CMS is an open source enterprise content management system based on the Django framework.

django CMS is voted Best Open Source CMS in 2015. [Announcing the 2015 Winner for Best Open Source CMS]

django CMS’s lightweight core enables integrating it with other software with ease. Developers can integrate existing Django applications with django CMS rapidly. New Django apps also can be developed which may take advantages of django CMS’s publishing and editing features.

User friendly views and intuitive djag and drop features make django CMS suitable for content editors. django CMS’s default multilingual support ensures the existence of multi language versions of all websites, pages and content. [django CMS official website, django CMS wikipedia article]

Features of django CMS Community Edition

  1. Management:
    1. Multi-site capability: Self service
    2. Reusable Design: Self service
    3. Approval Workflow (moderation): Via add-ons or third-party services
    4. Integrated Statistics: Via add-ons or third-party services
    5. Link Management: Self service
    6. Filterable table of contents: Self service
  2. Security:
    1. Granular priviliges: Self service
    2. Distinct Frontend + Backend: Self service
    3. Captcha: Via add-ons or third-party services
    4. SSL: Via add-ons or third-party services
    5. LDAP authentification: Via add-ons or third-party services
    6. Session management: Self service
    7. Response time for security issues: usually within 48h
    8. Sandbox for development: Via add-ons or third-party services
    9. User registration with double opt-in: Via add-ons or third-party services
    10. Controllable backup: Via add-ons or third-party services
    11. Open-Source Databases: MySQL, PostgreSQL, SQLite (+others)
  3. Extensibility:
    1. Extensible: Self service
    2. Customizable WYSIWYG editor: Via add-ons or third-party services
    3. Spell Checker: Via add-ons or third-party services
    4. Versioning, undo changes: Via add-ons or third-party services
    5. Drag & Drop content management: Self service
    6. Scripting API: Self service
    7. Mass upload of images/documents: Via add-ons or third-party services
    8. Automated image editing (e.g. scaling): Via add-ons or third-party services
    9. Multiple use of media content: Via add-ons or third-party services
    10. Free structuring (menus, categories): Self service
    11. Hiding contents for mobile devices: Via add-ons or third-party services
    12. Scheduled publishing/unpublishing: Self service
    13. Full text search: Via add-ons or third-party services
    14. Searchable assets (PDF, meta data): Via add-ons or third-party services
  4. Standards Compliance:
    1. UTF-8 support: Self service
    2. HTML5/CSS3 capable: Self service
    3. Sass/Gulp/Bower: Via add-ons or third-party services
    4. Valid markup: Self service
    5. Frontend (templates) WCAG compliant: Self service
    6. Backend WCAG compliant: Self service
    7. Configurable URLs: Self service
    8. Meta data editable per page: Self service
    9. Standard content repository APIs: Self service
  5. Features:
    1. Tagging: Via add-ons or third-party services
    2. Related Content: Via add-ons or third-party services
    3. Tag cloud: Via add-ons or third-party services
    4. Comments: Via add-ons or third-party services
    5. A/V media: Via add-ons or third-party services
    6. Slideshow: Via add-ons or third-party services
    7. Newsletter and E-Mail Campaign Management: Via add-ons or third-party services
    8. News & Blog: Via add-ons or third-party services
    9. Bulletin board: Via add-ons or third-party services
    10. Print view, PDF Generator: Via add-ons or third-party services
    11. Calendar / events: Via add-ons or third-party services
    12. Configurable user profiles: Via add-ons or third-party services
    13. Forms builder: Via add-ons or third-party services
    14. Social media: Via add-ons or third-party services
    15. Feeds: Via add-ons or third-party services
    16. FAQ: Via add-ons or third-party services
    17. Glossary: Via add-ons or third-party services
    18. Shop function: Via add-ons or third-party services
    19. Polls, surveys: Via add-ons or third-party services
    20. Quiz tool: Via add-ons or third-party services
    21. Sitemap generator: Self service
  6. Design:
    1. Free themes: Via add-ons or third-party services
    2. Commercial themes: Via add-ons or third-party services
    3. Configurable page layout: Self service
    4. individual Design/Themes/…. possible without further knowledge: Self service
  7. Sustainability/Support:
    1. Commercial Offers (services, training, hosting): Via add-ons or third-party services
    2. Manuals and documentation: Self service
    3. Large developer community: Self service
    4. Developer conferences: Self service
    5. Public user/developer platform: Self service

Local Setup Process

Requirements

  • Python 3.6 (Any stable version of Python can be used).

Environment

  • Operating System : Ubuntu 18.04 LTS (64-bit)

Installation

  • Create virtual environment:

    python3 -m venv venv
    
  • Activate virtual environment:

    source venv/bin/activate
    
  • Install required package djangocms-installer:

    pip install djangocms-installer
    
  • List all the installed packages in a separate file called requirements.txt:

    pip freeze>requirements.txt
    
  • Create a new directory called example_project and change current working to example_project:

    mkdir example_project && cd example_project
    
  • Create a new Django project called example_site

    djangocms example_site
    

    This command will:

    • Create a Django project
    • Install django CMS and its core plugins
    • Create and populate the database
    • Install default templates
  • Folder structure after successful installation of django-cms:

    .
    ├── example_project
    │   └── example_site
    │       ├── example_site
    │       │   ├── __init__.py
    │       │   ├── settings.py
    │       │   ├── static
    │       │   ├── templates
    │       │   │   ├── base.html
    │       │   │   ├── fullwidth.html
    │       │   │   ├── sidebar_left.html
    │       │   │   └── sidebar_right.html
    │       │   ├── urls.py
    │       │   └── wsgi.py
    │       ├── manage.py
    │       ├── media
    │       ├── project.db
    │       ├── requirements.txt
    │       └── static
    └── requirements.txt
    
  • Run the server:

    python manage.py runserver
    

    Visiting 127.0.0.1:8000 will redirect to login page:

alt Login page

Default credentials to login into admin panel:

  User: admin
  Password: admin

After login it will open the editor page:

alt Login page

Reference