Django is a Python web server while Cassandra is a high availability database. This article will be a complete guide for installation and use of Django with Cassandra.

 

Django Installation

Installing Python

Since Django is a Python web server, you’ll need Python. You can check if you have Python already.

python --version

However, if you’re using a Mac, I have had a lot of problems with the default system Python with the combination of Cassandra and Django. I would recommend reinstalling a new version of Python.

If you don’t have the Python version that you want, downloads are available at:

https://www.python.org/downloads

Various versions of Django are only compatible with different versions of Python. Currently, Django version 1.8 is the stable version release.

https://docs.djangoproject.com/en/1.8/faq/install/#faq-python-version-support

After you have obtained Python, you will need pip (which is a Python package installer).

To get pip, you will need to download the following file:

https://bootstrap.pypa.io/get-pip.py

curl -O https://bootstrap.pypa.io/get-pip.py

After download the get-pip.py file, you can install pip by changing directory to the download location.

python get-pip.py

After you have pip, you can install Django and the django cassandra driver.

pip install Django==1.8.2
pip install django-cassandra-engine

Installing Cassandra

Now that you have Django and the Django’s Cassandra library, you have to install Cassandra of course. I’ve written another blog post about installing and setting up Cassandra.

http://tangodown.org/how-to-install-cassandra-on-mac

Setting up a new Django project

We will create a Django project in the folder that we are at.

django-admin startproject mysite

A new folder called mysite/ will be created with the Django files.

We will edit the mysite/settings.py file to integrate the Cassandra database. We must change the line at INSTALLED_APPS to:

This app should be the first app on INSTALLED_APPS list.

Also, you need to change another group of lines.

HOST should be the IP address or domain name. You can also change the names of NAME and TEST_NAME.

After we have configured the settings, we can create an application where our website will render. The application is another folder with Python files that will render our Django website.

python manage.py startapp example

The following directory structure is created inside the top level mysite/ folder:

Afterwards, you can create a model, which is the schema structure of which objects are saved. Models belong within models.py, which is a file created after we made the application.

We can edit the models.py file inside example/ and include the following as a preliminary model:

Since we already installed Cassandra, in another terminal, we will need to start the service.

Back inside the Django project, change directory to the top level mysite/ where manage.py is.

With Cassandra running in the other terminal, we will now sync the model for Cassandra.

python manage.py sync_cassandra

With Cassandra running, after syncing with the Cassandra database, we should be able to access the Cassandra shell.

python manage.py dbshell

With this command, we can access the Cassandra shell inside the db database we create inside the mysite/settings.py. Nothing is inside the db at the moment though. Let’s exit our of the shell and come back to it later.

We will allow the root index / to work at http://localhost:8080. Inside example/urls.py, we will need to adjust the url settings.

What this snippet does is that it allows a function named index inside example/views.py to render the page at http://localhost:8080.

Inside example/views.py, we can write:

After saving that file, if you change directory to the top level mysite/, you can run the following command to boot your Django server up.

If you visit http://localhost:8080, you should see the "Hello world" in plain text.

Inside the example/views.py, we can start connecting to the Cassandra database with Python. Add the following imports for Cassandra and to the model to be able to establish Python connection with Cassandra.

Make sure that cassandra -f is running! Visit http://localhost:8080, and the page should render "Hello world" like before, but this time, it will also insert a row for "Hello world description" in Cassandra.

In another terminal, you go to the top level mysite/ directory, and run the following command with cassandra -f running in another terminal:

python manage.py dbshell

You have done your first insert with Django and Cassandra and checked the contents from the Cassandra shell!