Different types of data of Django application, such as HTML content, XML data, JSON data, image, 404 error, etc. are transferred to the template through Django view. Each view is created for a specific purpose and associated with a particular template. The data of the view can be generated from the user through HTML form or from the database or business logic. Django views can be created using a method of python class or python function. The class-based views contain many functionalities compared to function-based views. For this, most of the Django applications use class-based views to represent the data of the Django application. The ways of creating the function-based view and class-based view have been explained in this tutorial.

Prerequisites:

Before practicing the examples of this tutorial, you have to complete the following tasks:

  1. Install the Django version 3 on Ubuntu 20 (preferably)
  2. Create a Django project
  3. Run the Django server to check whether the server is working properly or not

Setup a Django App:

A. To create a Django app named viewapp, run the following command:

$ python3 manage.py startapp viewapp

B. To create the user for accessing the Django database, run the following command. If you have created the user before then skip this part:

$ python3 manage.py createsuperuser

C. Add the app name in the INSTALLED_APP part of the settings.py file.

INSTALLED_APPS = [


    …..


    ‘viewapp’

]

D. Create a folder named templates inside the viewapp folder and set the template’s location of the app in the TEMPLATES part of the settings.py file.

TEMPLATES = [


    {


      ….


            ‘DIRS’: [‘/home/fahmida/django_pro/viewapp/templates’],


             ….


      },

]

Create a Simple function-based View:

Open the views.py file from the viewapp folder and replace the content of this file with the following script. index() function is used in the script to create the HTML content that will be sent to the browser using the HttpResponse() method. Here, the current date and time of the system will be read using the today() function and the current date value will be generated before sending to the browser.

Views.py

# Import the date module to read the current date

from datetime import date

# Import the HttpResponse module to send data from view to template

from django.http import HttpResponse

# Define function to create function-based view

def index(request):


    # Read the current date


    today = date.today()


    # Set static data for the view


    content =

Welcome to LinuxHint




    content = “Today is “ today.strftime(“%B”) ” “ today.strftime(“%d”) “, “ str(today.year)




    # Sent the content to the browser


    return HttpResponse(content)

Modify the content of the urls.py file with the following script. In the script, the ‘welcome/’ path is defined to call the index() function that will send the HTML content to the template file.

urls.py

# Import path module

from django.urls import path

# Import view module

from viewapp import views

# Call index method to display the content


urlpatterns = [


   # Define path to call index() function


    path(‘welcome/’, views.index)

]

Run the following URL from the browser that will show the following output. A formatted headline text and the current date value are shown in the output.

http://localhost:8000/welcome/

<img alt="" data-lazy- data-lazy-src="https://kirelos.com/wp-content/uploads/2021/03/echo/How-to-Create-Django-Views_1.jpg" data-lazy- height="285" src="data:image/svg xml,” width=”975″>

Create a Simple class-based View:

Create a views2.py file inside the viewapp folder and add the following script. MyView class is defined in the script that contains a method named get(). A list variable named listdata is declared in the script to create a list of 10 random numbers. The values of the list will be passed to the template through the HttpResponse() method when this view is called. the random module has been used in the script to generate a random integer number in each iteration of the for loop using the randint() function.

views2.py

# Import the HttpResponse module to send data from view to template

from django.http import HttpResponse

# Import view module

from django.views import View

# Import random module

import random

# Define class for class-based views

class MyView(View):

    def get(self, request):


        # Declare the list variable


        listdata = []


        # Add the first element of the list


        listdata.append(

he list of 10 random numbers are:

)


        # Iterate the loop for 10 times


        for n in range(10):


            # Generate a random number within 1 to 50


            random_number = random.randint(1, 50)


            # Add the random number in the list


            listdata.append(random_number)


            # Add a break element in the list


            listdata.append(
)


        # Add the last element of the list


        listdata.append()


        # Send the list values to the browser


        return HttpResponse(listdata)

Modify the content of the urls.py file with the following script. In the script, the “number/” path is defined to call the MyView.as_view() method that will send the data of the list to the template file.

urls.py

# Import path module

from django.urls import path

# Import view module

from viewapp import views

# Import MyView class

from viewapp.views2 import MyView

# Call the get method of MyView class


urlpatterns = [


   # Define  path to call index() function


   path(‘welcome/’, views.index),


   # Define path to call MyView.as_view() method


    path(‘number/’, MyView.as_view()),

]

Run the following URL from the browser that will show the following output. The numbers of the output will be changed if the page is refreshed because each number of the list will be generated randomly.

http://localhost:8000/number/

<img alt="" data-lazy- data-lazy-src="https://kirelos.com/wp-content/uploads/2021/03/echo/How-to-Create-Django-Views_2.jpg" data-lazy- height="415" src="data:image/svg xml,” width=”970″>

Conclusion:

The output of the web application depends on the script of the view file that is a major part of any web application. Function-based views are mostly used in the early version of the Django app and now class-based vies are used in most applications of Django. The ways of creating both types of views have been shown in this tutorial to help the new Django users create their views based on their application.

About the author

<img alt="Fahmida Yesmin" data-lazy-src="https://kirelos.com/wp-content/uploads/2021/03/echo/channel-logo-150×150.jpg" height="112" src="data:image/svg xml,” width=”112″>

Fahmida Yesmin

I am a trainer of web programming courses. I like to write article or tutorial on various IT topics. I have a YouTube channel where many types of tutorials based on Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel etc. are published: Tutorials4u Help.