For added ambience, listen to this song while reading.
Django is a web framework. I only vaguely knew what that meant when I declared I was using it for my project. In a nutshell, it’s a way of plugging everything about a web application together in a coherent, structured way. That includes HTML, CSS, images, data stores and middleware. Anyone can write a CGI script in their favorite language that does nothing but spit out HTML to a browser, but that’s unnecessary with Django. In fact, Django won’t even let you embed any functional code within your HTML template. But we’ll get on to that later.
Django is an MVC web framework built on the Python programming language. MVC stands for Model – View – Controller, and is a massively important factor in the design of any Django web app. The Model represents the structure of the data used in the application. In most cases, your data will be stored in a typical relational database. The View typically defines what the user sees from an application and is often referred to as the front end or user interface. The Controller makes up the business logic of the application. It glues together the Model and View in a way that the View can both display data as stored in the Model and update the Model based on a user’s input.
Installing and getting started with Django is very straightforward. As I’m using a Debian-based Linux distribution for both development and deployment, installation is just one command:
apt-get install python-django
Creating a Django project is just another command:
django-admin startproject myproject
This creates the core files you need to get started with Django development. Each app has a manage.py file, as well as a directory named after your project. This project folder can be used to store HTML templates, as well as static content such as CSS files and images.
Anything that represents a key piece of functionality in a Django project is called an app. Apps are created with the manage.py script:
python manage.py startapp myapp
Each app is encapsulated in its own directory, inside of which are two important files: models.py and views.py. In these files, we define – yep, you guessed it – the models and views for the app.
In the second part of this post, I’ll explain what these files are in more detail, including what goes in to them to create a basic app.