Django is a free and open-source high-level Python web framework designed to help developers build secure, scalable and maintainable web applications.
There are different methods to install Django, depending on your needs. It can be installed system-wide or in a Python virtual environment using pip.
Django packages are also included in the official Ubuntu repositories and can be installed using the
apt package manager. This is the easiest method to install Django on Ubuntu 18.04, but not as flexible as installing in a virtual environment. Also, the version included in the repositories always lags behind the latest version of Django.
The main purpose of Python virtual environments is to create an isolated environment for different Python projects. This way you can have multiple different Django environments on a single computer and install a specific version of a module on a per project basis without worrying that it will affect your other Django installations. If you install Django into the global environment then you can install only one Django version on your computer.
Installing Django on Ubuntu 18.04
The following sections provide a step by step instructions about how to install Django in a Python virtual environment on Ubuntu 18.04.
Installing Python 3 and venv
Ubuntu 18.04 ships with Python 3.6 by default. You can verify that Python 3 is installed on your system by typing:
The output should look like this:
Starting from Python 3.6, the recommended way to create a virtual environment is to use the
venv module. To install the
python3-venv package that provides the
venv module run the following command:
sudo apt install python3-venv
Once the module is installed we are ready to create a virtual environment for our Django application.
Creating a Virtual Environment
Start by navigating to the directory where you would like to store your Python 3 virtual environments. It can be your home directory or any other directory where your user has read and write permissions.
Once inside the directory, run the following command to create your new virtual environment:
python3 -m venv venv
The command above creates a directory called
venv, which contains a copy of the Python binary, the Pip package manager, the standard Python library and other supporting files. You can use any name you want for the virtual environment.
To start using this virtual environment, you need to activate it by running the
Once activated, the virtual environment’s bin directory will be added at the beginning of the
$PATH variable. Also your shell’s prompt will change and it will show the name of the virtual environment you’re currently using. In our case that is
Now that the virtual environment is activated, you can use the Python package manager pip to install Django:
pip install django
Within the virtual environment, you can use the command
pip instead of
python instead of
To verify the installation use the following command which will print the Django version:
python -m django --version
At the time of writing this article, the latest official Django version is 2.1.2
Your Django version may differ from the version shown here.
Creating a Django Project
To create a new Django project named
mydjangoapp use the
django-admin command-line utility:
django-admin startproject mydjangoapp
The command above will create a
mydjangoapp directory in your current directory.
mydjangoapp/ |-- manage.py `-- mydjangoapp |-- __init__.py |-- settings.py |-- urls.py `-- wsgi.py
Inside that directory, you will find the main script for managing projects named
manage.py and another directory including database configuration, and Django and application-specific settings.
Let’s migrate the database and create an administrative user.
Start by navigating to the
Run the following command to migrate the database:
python manage.py migrate
The output will look something like the following:
Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying sessions.0001_initial... OK
Once the database is migrated, create an administrative user so that you can use the Django admin interface:
python manage.py createsuperuser
The command will prompt you for a username, an email address, and a password for your administrative user.
Username (leave blank to use 'black'): admin Email address: email@example.com Password: Password (again): Superuser created successfully.
Testing the Development Server
Start the development web server using the
manage.py script followed by the
python manage.py runserver
You’ll see the following output:
Performing system checks... System check identified no issues (0 silenced). October 20, 2018 - 11:16:28 Django version 2.1.2, using settings 'mydjangoapp.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
If you installed Django on a virtual machine and you want to access Django development server then you’ll need to edit the
settings.py file and add the server IP address inside the
http://127.0.0.1:8000 in your web browser and you will be presented with the default Django landing page:
You can access the Django admin interface, by adding
/admin/ to the end of the URL (
http://127.0.0.1:8000/admin/). This will take you to the admin login screen:
Enter your username and password and you will be redirected to the Django admin page:
To stop the development server type
CTRL-C in your terminal.
Deactivating the Virtual Environment
Once you are done with your work, deactivate the environment, by typing
deactivate and you will return to your normal shell.
You have learned how to create a Python virtual environment and install Django on your Ubuntu 18.04 machine. To create additional Django development environments repeat the steps we outlined in this tutorial.
If you are new to Django, visit the Django documentation page and learn how to develop your first Django app.
If you are facing any problem, feel free to leave a comment.