Django is a full-featured Python web framework for developing dynamic websites and applications. Using Django, you can quickly create Python web applications and rely on the framework to do a good deal of the heavy lifting.
In this guide, we will show you how to get Django up and running on an Ubuntu 14.04 server. After installation, we’ll show you how to start a new project to use as the basis for your site.
There are a number of different ways in which you can install Django depending upon your needs and how you want to configure your development environment. These have different advantages and one method may lend itself better to your specific situation than others.
Some of the different methods are below:
apt
package manager. This is very simple, but not as flexible as some other methods. Also, the version contained in the repositories may lag behind the official versions available from the project.pip
tool is a package manager for Python packages. If you install pip
, you can easily install Django on the system level for use by any user. This should always contain the latest stable release. Even so, global installations are inherently less flexible.virtualenv
package allows you to create self-contained environments for various projects. Using this technology, you can install Django in a project directory without affecting the greater system. This allows you to provide per-project customizations and packages easily. Virtual environments add some slight mental and process overhead in comparison to globally accessible installation, but provide the most flexibility.git
repo. This is necessary to get the latest features/fixes and can be done globally or locally. Development versions do not have the same stability guarantees, however.With the above caveats and qualities in mind, select the installation method that best suites your needs out of the below instructions.
If you wish to install Django using the Ubuntu repositories, the process is very straight forward.
First, update your local package index with apt
, and then install the python-django
package:
sudo apt-get update
sudo apt-get install python-django
You can test that the installation was successful by typing:
django-admin --version
1.6.1
This means that the software was successfully installed. You may also notice that the Django version is not the latest stable. To learn a bit about how to use the software, skip ahead to learn how to create sample project.
If you wish to install the latest version of Django globally, a better option is to use pip
, the Python package manager. First, we need to install the pip
package manager. Refresh your apt
package index:
sudo apt-get update
Now you can install pip
. If you plan on using Python version 2, install using the following commands:
sudo apt-get install python-pip
If, instead, you plan on using Python 3, use this command:
sudo apt-get install python3-pip
Now that you have pip
, we can easily install Django. If you are using Python 2, you can type:
sudo pip install django
If you are using Python 3, use the pip3
command instead:
sudo pip3 install django
You can verify that the installation was successful by typing:
django-admin --version
1.7.5
As you can see, the version available through pip
is more up-to-date than the one from the Ubuntu repositories (yours will likely be different from the above).
Perhaps the most flexible way to install Django on your system is with the virtualenv
tool. This tool allows you to create virtual Python environments where you can install any Python packages you want without affecting the rest of the system. This allows you to select Python packages on a per-project basis regardless of conflicts with other project’s requirements.
We will begin by installing pip
from the Ubuntu repositories. Refresh your local package index before starting:
sudo apt-get update
If you plan on using version 2 of Python, you can install pip
by typing:
sudo apt-get install python-pip
If, instead, you plan on using version 3 of Python, you can install pip
by typing:
sudo apt-get install python3-pip
Once pip
is installed, you can use it to install the virtualenv
package. If you installed the Python 2 pip
, you can type:
sudo pip install virtualenv
If you installed the Python 3 version of pip
, you should type this instead:
sudo pip3 install virtualenv
Now, whenever you start a new project, you can create a virtual environment for it. Start by creating and moving into a new project directory:
mkdir ~/newproject
cd ~/newproject
Now, create a virtual environment within the project directory by typing:
virtualenv newenv
This will install a standalone version of Python, as well as pip
, into an isolated directory structure within your project directory. We chose to call our virtual environment newenv
, but you should name it something descriptive. A directory will be created with the name you select, which will hold the file hierarchy where your packages will be installed.
To install packages into the isolated environment, you must activate it by typing:
source newenv/bin/activate
Your prompt should change to reflect that you are now in your virtual environment. It will look something like (newenv)username@hostname:~/newproject$
.
In your new environment, you can use pip
to install Django. Regardless of whether you are using version 2 or 3 of Python, it should be called just pip
when you are in your virtual environment. Also note that you do not need to use sudo
since you are installing locally:
pip install django
You can verify the installation by typing:
django-admin --version
1.7.5
To leave your virtual environment, you need to issue the deactivate
command from anywhere on the system:
deactivate
Your prompt should revert to the conventional display. When you wish to work on your project again, you should re-activate your virtual environment by moving back into your project directory and activating:
cd ~/newproject
source newenv/bin/activate
If you need a development version of Django, you will have to download and install Django from its git
repository.
To do so, you will need to install git
on your system with apt
. Refresh your local package index by typing:
sudo apt-get update
Now, we can install git
. We will also install the pip
Python package manager. We will use this to handle the installation of Django after it has been downloaded. If you are using Python 2, you can type:
sudo apt-get install git python-pip
If you are using Python 3 instead, you should type this:
sudo apt-get install git python3-pip
Once you have git
, you can clone the Django repository. Between releases, this repository will have more up-to-date features and bug fixes at the possible expense of stability. You can clone the repository to a directory called django-dev
within your home directory by typing:
git clone git://github.com/django/django ~/django-dev
Once the repository is cloned, you can install it using pip
. We will use the -e
option to install in “editable” mode, which is needed when installing from version control. If you are using version 2 of Python, type:
sudo pip install -e ~/django-dev
If you are using Python 3, type:
sudo pip3 install -e ~/django-dev
You can verify that the installation was successful by typing:
django-admin --version
1.9.dev20150305171756
Note that you can also combine this strategy with the use of virtualenv
above if you wish to install a development version of Django in a single environment.
Now that you have Django installed, we can show you briefly how to get started on a project.
You can use the django-admin
command to create a project:
django-admin startproject projectname
cd projectname
This will create a directory called projectname
within your current directory. Within this, a management script will be created and another directory called projectname
will be created with the actual code.
Note: If you were already in a project directory that you created for use with the virtualenv
command, you can tell Django to place the management script and inner directory into the current directory without the extra layer by typing this (notice the ending dot):
django-admin startproject projectname .
To bootstrap the database (this uses SQLite by default) on more recent versions of Django, you can type:
python manage.py migrate
If the migrate
command doesn’t work, you likely are using an older version of Django. Instead, you can type:
python manage.py syncdb
You will be asked to create an administrative user as part of this process. Select a username, email address, and password for the user.
If you used the migrate
command above, you’ll need to create the administrative user manually. You can create an administrative user by typing:
python manage.py createsuperuser
You will be prompted for a username, an email address, and a password for the user.
Once you have a user, you can start up the Django development server to see what a fresh Django project looks like. You should only use this for development purposes. Run:
python manage.py runserver 0.0.0.0:8000
Visit your server’s IP address followed by :8000
in your web browser
server_ip_address:8000
You should see something that looks like this:
Now, append /admin
to the end of your URL to get to the admin login page:
server_ip_address:8000/admin
If you enter the admin username and password that you just created, you should be taken to the admin section of the site:
When you are finished looking through the default site, you can stop the development server by typing CTRL-C
in your terminal.
The Django project you’ve created provides the structural basis for designing a more complete site. Check out the Django documentation for more information about how to build your applications and customize your site.
You should now have Django installed on your Ubuntu 14.04 server, providing the main tools you need to create powerful web applications. You should also know how to start a new project and launch the developer server. Leveraging a complete web framework like Django can help make development faster, allowing you to concentrate only on the unique aspects of your applications.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
i want series of tutorial on creating website using Django can you help out?
Thanks for the article! However, what should we use instead of “runserver” if we’re done developing and want a final product?
Excellent… Thank you so much guys.
Great article, it helped me a lot in my project! Best regards! Miguel A. Gómez
Hi All,
I am Sameer.Shrinivas.Umarji working in Intel Software Company in Bangalore. I am working on In Vehicle Infotainment project. I am trying to install Djanjo Server on my System. I am working on Lab PC with Ubuntu Linux 14.04 running on it connected to network. I followed the above procedures mentioned on the webpage to install the Django. I am using normal Linux Terminal command prompt for running the commands. Also following are the detailed commands used for setting up the Django,
sudo apt-get update sudo apt-get install python-django django-admin --version django-admin startproject projectname cd projectname django-admin startproject projectname . python manage.py migrate python manage.py syncdb python manage.py runserver 0.0.0.0:8000
When I run the last command following is the output on the terminal
Validating models…
0 errors found August 19, 2016 - 10:22:03 Django version 1.6.1, using settings ‘projectname.settings’ Starting development server at http://0.0.0.0:8000/ Quit the server with CONTROL-C.
I am using Mozilla Firefox Browser for accessing the Django server.Then I tried to access the Django server using the address 0.0.0.0:8000 on the webpage. i could not get the Welcome message of Django server. Following is the error displayed on the webpage
Network Error (tcp_error)
A communication error occurred: “” The Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests. You may wish to try again at a later time.
For assistance, contact your network support team.
As Django server had started at http://0.0.0.0:8000/ I tried to run the following command, http://0.0.0.0:8000/admin for username and password prompt on the Django. I could not access the login page of Django but i got the following error message on the webpage
Network Error (tcp_error)
A communication error occurred: “” The Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests. You may wish to try again at a later time.
For assistance, contact your network support team.
I tried couple of time connecting to Django Server tried for about 3-4 hrs. Still I am getting the same error message.
Also I tried to ping on to the server on the terminal
mtbf@mtbf-OptiPlex-9010:~/Desktop/Sameer/django_server/django-master/projectname$ ping 0.0.0.0 PING 0.0.0.0 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.026 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.026 ms 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.036 ms 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.029 ms 64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.030 ms 64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.025 ms 64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.027 ms 64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.034 ms 64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.029 ms 64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.032 ms 64 bytes from 127.0.0.1: icmp_seq=11 ttl=64 time=0.027 ms 64 bytes from 127.0.0.1: icmp_seq=12 ttl=64 time=0.029 ms 64 bytes from 127.0.0.1: icmp_seq=13 ttl=64 time=0.035 ms 64 bytes from 127.0.0.1: icmp_seq=14 ttl=64 time=0.031 ms 64 bytes from 127.0.0.1: icmp_seq=15 ttl=64 time=0.031 ms 64 bytes from 127.0.0.1: icmp_seq=16 ttl=64 time=0.029 ms 64 bytes from 127.0.0.1: icmp_seq=17 ttl=64 time=0.028 ms 64 bytes from 127.0.0.1: icmp_seq=18 ttl=64 time=0.035 ms 64 bytes from 127.0.0.1: icmp_seq=19 ttl=64 time=0.033 ms 64 bytes from 127.0.0.1: icmp_seq=20 ttl=64 time=0.032 ms ^C — 0.0.0.0 ping statistics — 20 packets transmitted, 20 received, 0% packet loss, time 18999ms rtt min/avg/max/mdev = 0.025/0.030/0.036/0.004 ms mtbf@mtbf-OptiPlex-9010:~/Desktop/Sameer/django_server/django-master/projectname$ python manage.py runserver 127.0.0.169:8000 I tried using some proxy IP eg 127.0.0.169 and diffrent port 8080 etc tried with diffrent combinations still I am not able to access the Django server.
Please give me some solution for the problem as soon as possible as my work is critical.
Waiting for your precious reply.
thanks and regards, Sameer.Shrinivas.Umarji
I was following the pip3 instructions, but I ran into an “ImportError: No module named django.core.management” error upon the runserver attempt. Googling suggests that I might have django (which had no trouble creating the project) installed under the wrong Python, but the debugging process that came with that didn’t turn anything up. I appear to be stuck…
Nice one to start !!
I’ve installed all using virtualenv but at last command: python manage.py migrate Traceback (most recent call last): File “manage.py”, line 8, in <module> from django.core.management import execute_from_command_line ImportError: No module named ‘django’
whats wrong ?
can someone pls clarify in context of this tutorial ::What is server_ip_address? and how to find one?
Excelent!!! =) Thank you for this tutorial… This is the best tutorial =)