Building an E-Learning Platform

In this chapter, you will start a new Django project. You will build an e-learning platform with your own content management system (CMS).

Online learning platforms are a great example of applications where you need to provide tools to generate content with flexibility in mind.

In this chapter, you will learn how to build the functionality for instructors to create courses and manage the contents of courses in a versatile and efficient manner.

In this chapter, you will learn how to:

  • Create fixtures for your models
  • Use model inheritance
  • Create custom model fields
  • Use class-based views and mixins
  • Build formsets
  • Manage groups and permissions
  • Create a CMS

Setting up the e-learning project

Your final practical project will be an e-learning platform. First, create a virtual environment for your new project and activate it with the following commands:

mkdir env
python3 -m venv env/educa
source env/educa/bin/activate

Install Django in your virtual environment with the following command:

pip install "Django==3.0.*"

You are going to manage image uploads in your project, so you also need to install Pillow with the following command:

pip install Pillow==7.0.0

Create a new project using the following command:

django-admin startproject educa

Enter the new educa directory and create a new application using the following commands:

cd educa
django-admin startapp courses

Edit the settings.py file of the educa project and add courses to the INSTALLED_APPS setting, as follows:

INSTALLED_APPS = [
    'courses.apps.CoursesConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

The courses application is now active for the project. Let's define the models for courses and course contents.