Django Tutorial | Not a Movie, but a Python Framework to Create Websites

A beginner tutorial to understand how Django works with the Model View Template (MVT) procedure

Jesús López's photo
Jesús López
·Jan 6, 2022·

4 min read

Django Tutorial | Not a Movie, but a Python Framework to Create Websites

Photo by Faisal on Unsplash

Table of contents

  • Set up your Machine
  • Start the Django Project
  • See the Default Django Website
  • Create an App within the shop Django Project
  • Summary

See the code of the tutorial in this GitHub repo.

Set up your Machine

What do I need to start a Django project?

  • It is recommended that you create a new environment
  • And that you have Anaconda installed. If not, click here to download & install
  • You need to install the library in your terminal (use Anaconda Prompt for Windows Users):

      conda create -n django_env django
      conda activate django_env

Start the Django Project

Ok, you got it. What's next?

  • Open a Code Editor application to start working more comfortable with the project
  • I use Visual Studio Code (aka VSCode), you may download & install it here

What should I do within VSCode?

  • You will use the Django CLI installed with the Django package already
  • To create the standard folders and files you need for the application
  • Type the following line within the terminal:

      django-admin startproject shop

What should I see on my computer after this?

  1. If you open your user folder, you will see that
  2. A folder shop has been created
  3. drag & drop it to VSCode drag_drop.gif
  4. Now check the folder structure and familiarize yourself with the files & folders
    • The folder structure should look like this ↓
- shop/
    - shop/

Do I need to study all of them?

  • No, just go with the flow, and you'll get to understand everything at the end


See the Default Django Website

Ok, what's the next step?

  • You'll probably want to see your Django App up and running, right?
  • Then, go over the terminal and write the following ↓
cd shop
python runserver
  • A local server has opened in, open it in a web browser
  • Which references the localhost and you should see something like this ↓

What if I try another URL like

How can I tell that to Django?

Create an App within the shop Django Project

  • With the following line of code ↓

      python startup products


  • Create an URL within the file shop >
from django.contrib import admin
from django.urls import path, include # modified

urlpatterns = [
    path('products/', include('products.urls')), # added

The View

  1. Create a View (HTML Code) to be recognised when you go to the URL

  2. Within the file shop > products >

from django.http import HttpResponse

def view_for_products(request):
    return HttpResponse("This function will render `HTML` code that makes you see this <p style='color: red'>text in red</p>.")
  • See this tutorial if you want to know a bit more about HTML

  • Call the function view_for_products when you click on

  • You need to create the file within products → shop > products >

from django.urls import path
from . import views

urlpatterns = [
    path('', views.view_for_products, name='index'),

Connecting Project URLs with App URLs

Why do we reference the URLs in two files? One in shop/ folder and the other in products/

  • It is a best practice to have a Django project separated by different Apps
  • In this case, we created the products App
  • In our the file shop/, you reference the URLs here ↓
urlpatterns = [
    path('products/', include('products.urls')), #here
  • So that at the time you navigate to
  • You will have access to the URLs defined in shop/products/
  • For example, let's create another View in shop/products/

def new_view(request):
    return HttpResponse('This is the <strong>new view</strong>')
  • And reference it in the file shop/products/
from django.urls import path
from . import views

urlpatterns = [
    path('', views.view_for_products, name='index'),
    path('pepa', views.new_view, name='pepa'), # new url
  • We don't need to reference the View in shop/ since
  • we can access all URLs in shop/products/ at the time we wrote
  • include('products.urls') in the file shop/
  • Try to go to


So, each time I want to create a different HTML, do I need to create a View?

  • Yes, it's how the Model View Template (MVT) works ↓

  • You introduce an URL

  • The URL activates a View
  • And HTML code gets rendered in the website

Why don't you mention anything about the model?

  • Well, that's something to cover in the following article 🔥 COMING SOON!

Any doubts?

Let me know in the comments; I'd be happy to help!

Did you find this article valuable?

Support Jesús López by becoming a sponsor. Any amount is appreciated!

See recent sponsors Learn more about Hashnode Sponsors
Share this