DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
What's in store for DevOps in 2023? Find out today at 11 am ET in our "DZone 2023 Preview: DevOps Edition!"
Last chance to join
  1. DZone
  2. Data Engineering
  3. Databases
  4. Python Django Tutorial for Beginners

Python Django Tutorial for Beginners

Turn up the sweet sounds of Django Reinhardt's jass guitar and learn how to use to the most popular web application development framework for Python.

Rinu Gour user avatar by
Rinu Gour
·
Nov. 21, 18 · Tutorial
Like (5)
Save
Tweet
Share
39.27K Views

Join the DZone community and get the full member experience.

Join For Free

Python Django Tutorial – What is Django?

Django is a high-level Python framework. It is a free and open source framework, written in Python itself, and follows the model-view-template architectural pattern. We can use it to develop quality web applications faster and easier. Since developing for the web needs a set of similar components, you can use a framework. This way, you don’t have to reinvent the wheel. These tasks include authentication, forms, uploading files, management panels, and more.

nstall Django

To work with Django on your system, use the following command: 

C:\Users\lifei>pip install Django 

Serving a Request for a Website

Let’s first find out, in layman’s terms, what happens when your server receives a request for a website. The request is passed to Django and that tries to analyze this request. The URL resolver tries to match the URL against a list of patterns. It performs this match from top to bottom. If it can find a match and passes the request to the view, which is the associated function.
The function view can check if the request is allowed. It also generates a response, and then Django sends it to the user’s web browser.

History of the Django Framework

  • Adrian Holovaty and Simon Willison created Django in the fall of 2003 at the Lawrence Journal-World newspaper.
  • Django was publicly released under a BSD license in July 2005; named after the guitarist Django Reinhardt.
  • Today, Django is an open source project with contributors around the world.

MVT Pattern

MVC stands for Model-View-Controller. We use this when we want to develop applications with user interfaces. MVT stands for Model-View-Template. A template is an HTML file mixed with DTL (Django Template Language). Django takes care of the Controller part, which is the code that controls the interaction between the other two parts, the Model and View. When a user requests for a resource, Django acts as a controller and checks if it is available. If the URL maps, the View interacts with the Model and renders a Template. Django sends back a Template to the user as a response.

Best Python Django Tutorial For Beginners (Advanced 2018)

The Model helps us handle databases. The View executes business logic and interacts with Model to carry data and also renders the Template. The Template handles the user interface and is a presentation layer.

The Model class holds essential fields and methods. For each model class, we have a table in the database. The Model is a subclass of django.db.models.Model. Each field here denotes a database field. With Django, we have a database-abstraction API that lets us perform CRUD (Create-Retrieve-Update-Delete) operations on mapped tables.

Features of Django

When working with Python Django, you can expect the following Django Features:

a. Scalability

When you need to scale your system, you can simply add more web nodes to your Django. That is, you can scale it horizontally. Two products that use Django’s scalability are Disqus and Instagram.

b. Portability

The portability of Python makes for a portable Django too. Various platforms include Windows, Linux, and MacOS.

c. Security

Python Django ensures some arrangements for security too. One of these is that it stores hashed passwords in cookies.

d. Versatility

Python Django will work with formats like HTML, JSON, XML, among others. It also supports many different client-side frameworks. So, we can use it to build anything including regular websites and social networks.

e. Packages

Django Programming has the foundation of thousands of additional packages.

f. Ease of Use

Features like the built-in admin interface make it easy to build with Django. It is also fully functional and finds it easy to switch databases.

Prerequisites to Creating a Project in Django

In this Python Django Tutorial, we will study the prerequisites to create a project in Django.

a. Starting a Project

Use the following command in the command prompt to begin your project:

C:\Users\lifei\Desktop>django-admin startproject project0 

Then move the project to this folder.

C:\Users\lifei\Desktop>cd project0

C:\Users\lifei\Desktop\project0>

b. Running the Server

You could apply these migrations before you start your server:

C:\Users\lifei\Desktop\project0>python manage.py migrate 

Now, start the server:

C:\Users\lifei\Desktop\project0>python manage.py runserver 

Performing system checks…

System check identified no issues (0 silenced).

July 08, 2018 – 21:51:39

Django version 2.0.7, using settings ‘project0.settings’

Starting development server at http://127.0.0.1:8000/

Quit the server with CTRL-BREAK.

If you see something like this, it means you have successfully installed Django:

Python Django Tutorial - Prerequisites to Creating a Project

c. Setting Up a Database

For our project, we have set up MySQL. Python also supports other database products like Oracle, SQLite 3, MongoDB, PostgreSQL, and the GoogleAppEngine Datastore.

d. Web Server

While Django has its own lightweight web server, you can also use your own, like Apache.

Django Project Structure

This is what your project directory will look like:

Best Python Django Tutorial For Beginners (Advanced 2018)

a. manage.py

This script lets us interact with our project using the command line. Facilities include starting up the server and syncing to the database.

Best Python Django Tutorial For Beginners (Advanced 2018)

b. Project Folder

This holds the packages for our project:

Best Python Django Tutorial For Beginners (Advanced 2018)

  • __init__.py - A Python package.
  • settings.py - This holds website settings like database configuration details.
  • urls.py - This holds links in your project and the function(s).
  • wsgi.py - This deploys our project over WSGI and helps the app communicate with the web server. WSGI stands for Web Server Gateway Interface.
  • __pycache__ - This directory holds files like __init__.cpython-36.pyc, settings.cpython-36.pyc, urls.cpython-36.pyc, and wsgi.cpython-36.pyc.

In settings.py, DEBUG is set to True. This is okay at the time of deployment, but you should set it to False when working with a live project. This is because this gives out information about errors in your project.

Another construct you will find in this file is-

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
  }
}

c. db.sqlite3

This is the database file for your project and has the extension .sqlite3.

Creating an Application

Let’s learn how to create an application in Django. Projects are modular. A contact form is one such application, and you can borrow it from one project for another. You can start an application this way:

C:\Users\lifei\Desktop\project0>python manage.py startapp app0

 

This creates the following contents in the directory, project0:

Best Python Django Tutorial For Beginners (Advanced 2018)



Best Python Django Tutorial For Beginners (Advanced 2018)

  • Migrations - This holds another __init__.py file.
  • __init__.py - This is a Python package.
  • admin.py - This lets us make the app modifiable in the admin interface.
  • apps.py - This holds the names of all your applications.
  • models.py - This holds all application models.
  • tests.py - This holds unit tests for the project.
  • views.py - This holds the application views for the project.

In your settings.py file, you can add your app name in the INSTALLED_APPS construct:

INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'app0'
]

Python Django Admin Interface

Here, we are going to see how to use the Django admin interface. Using the Django admin interface, you can perform CRUD operations on the model. This interface depends on the django.contrib model, which is enabled by default. You can find it labled as ‘django.contrib.admin’ in INSTALLED_APPS in settings.py.
To access this interface, you can try one of two methods:

  • 127.0.0.1:8000/admin
  • localhost:8000/admin

You get something like this:

Best Python Django Tutorial For Beginners (Advanced 2018)

a. Creating a Superuser

To create a superuser, you can push in the following command:

python manage.py createsuperuser 

Once you’re done creating a superuser, use this username and password to login to the dashboard.

Best Python Django Tutorial For Beginners (Advanced 2018)

How to Create Simple Project in Django

We can create a simple view using the following code:

>>> from django.http import HttpResponse
>>> def hello(request):
 return HttpResponse("Hello")

We save this file as views.py in the inner project0 directory.

This is how we can import it-

>>> os.chdir('C:\\Users\\lifei\\Desktop\\project0')
>>> from project0.views import hello

a. Mapping to a URL

Now in the inner project0 directory, you have a file called urls.py . It looks something like this:

“””project0 URL Configuration 

The `urlpatterns` list routes URLs to views. For more information please see:

https://docs.djangoproject.com/en/2.0/topics/http/urls/

Examples:

Function views:

  • Add an import: from my_app import views 
  • Add a URL to urlpatterns:  path(”, views.home, name=’home’)

Class-based views:

  • Add an import: from other_app.views import Home 
  • Add a URL to urlpatterns:  path(”, Home.as_view(), name=’home’)

Including another URLconf:

  • Import the include() function: from django.urls import include, path 
  • Add a URL to urlpatterns:  path(‘blog/’, include(‘blog.urls’))
>>> from django.contrib import admin
>>> from django.urls import path
>>> urlpatterns = [
 path('admin/', admin.site.urls),
]

In this, the urlpatterns tuple maps URLs to views. Add this line of import to urls.py:

from project0.views import hello 

And then add this value to your urlpatterns tuple:

path('hello/',hello),

Best Python Django Tutorial For Beginners (Advanced 2018)

Now, go to the following address: http://127.0.0.1:8000/hello/

Best Python Django Tutorial For Beginners (Advanced 2018)

Conclusion

In this Python Django Tutorial, we get started with Django, a very common framework with Python. Here, we studied the history and Features of Django. In addition, we covered the MVT pattern, prerequisites to creating a project, and many more. Hope you enjoyed the post!

Django (web framework) Python (language) application Database Interface (computing) Open source

Published at DZone with permission of Rinu Gour. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • API Design Patterns Review
  • What Is a Kubernetes CI/CD Pipeline?
  • Microservices Discovery With Eureka
  • Deploying Java Serverless Functions as AWS Lambda

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: