DEV Community

Cover image for My Introduction to Django
Randy Steele
Randy Steele

Posted on


My Introduction to Django

My Introduction to Django

I have been itching to learn something new lately so I decided to give Django a try. I have heard a lot about Python and Django but I hadn't yet delved into it. I will show you how I created a simple Django wordcount app.

First things first.

First, you need to see if you have Django installed on your computer. To do this I just decided to run the command to install Django which is pip3 install django and I received
this: Requirement already satisfied: django==2.0.2 in /usr/local/lib/python3.9/site-packages (2.0.2) so it looks like I already have it installed, if you don't have it installed, this command will get it installed for you.

Creating a Django project

Django comes with some commands that simplify things for you. Similar to how you can run rails new myapp with Django you can run django-admin startproject myapp to see the other commands Django comes with just run django-admin help in your terminal. When you run this command you will get a file structure that looks a little like thisAlt Text

Starting the Django server

To verify everything went well when you created your new project, you can run the server by running python3 runserver you should get a response like this

March 12, 2021 - 16:58:53
Django version 2.0.2, using settings 'wordcount.settings'
Starting development server at
Quit the server with CONTROL-C.
Enter fullscreen mode Exit fullscreen mode

If you have ever run a server before this should look familiar, just go to this URL, and if you see the Django homepage you are good to go!


Here's how Django defines templates:

A template contains the static parts of the desired HTML output as well as some special syntax describing how dynamic content will be inserted.

Create a new folder in the top level of your directory named templates and within that folder create a file named home.html within that file <h1>HELLO</h1> Once you have done that you will need to create another file named
in this file, we need to tell Django what template we want to render. That code should look something like this:

from django.http import HttpResponse 
from django.shortcuts import render 

def homepage(request):
    return render(request, 'home.html')
Enter fullscreen mode Exit fullscreen mode

This tells Django that when we visit the homepage we should render the home.html template. Next, navigate to and find TEMPLATES and then DIRS and add 'templates' that should look like this:

        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [

Enter fullscreen mode Exit fullscreen mode

Finally, navigate to and urlpatterns and modify it like so:

urlpatterns = [
    path('', views.homepage),
Enter fullscreen mode Exit fullscreen mode

For those of you that are familiar with rails, this is kind of like setting up your routes.rb file. Now let's fire up the server python3 runserver and you should see your home.html file rendered.

My App

The app I built is a wordcount app. So, in my home.html I have built out a form with a button that will fire the event to count the words in a text box. So, in my home.html I have build the following form:

<form action="{%url 'count' %}">
    <textarea cols="40" rows="5" name="fulltext"></textarea><br><br>
    <input type='submit' value="Count!"/>
Enter fullscreen mode Exit fullscreen mode

I then created a count.html file in the templates directory that will be responsible for rendering the HTML on the count page. Perhaps first we should navigate to our file and configure the count view. I will create a new view called count and in that view, I will grab the value of fulltext which is the name of the Textarea field. Next, in order to count each word in the text area box we will split the fulltext and add that to our return.

def count(request):
    fulltext = request.GET['fulltext']
    wordlist = fulltext.split()
    return render (request, 'count.html', {'fulltext':fulltext, 'count':len(wordlist)})    
Enter fullscreen mode Exit fullscreen mode


That's it, you should now have a working Django wordcount app. I come from a Ruby background and I can see some similarities between Python/Django and Ruby/Rails. Some examples are the code in looks a lot like a Ruby method without the end the is similar to config/routes.rb and of course the html files are similar to the views in Rails. Overall I think Django has been pretty simple to get started with and I could definitely see myself using it more often.


Learn more about Django here and go build something fun!
Feel free to check out the repo here

Top comments (0)

An Animated Guide to Node.js Event Loop

>> Check out this classic DEV post <<