Python function that receives an HTTP request and returns an HTTP response.
FBVs are the simplest way to handle requests in Django and are ideal for beginners or small projects.
What is a View?
A view contains the business logic of your application. It processes user requests, interacts with models if needed, and returns a response.
User Request
↓
View
↓
User Response
Creating a Function-Based View
views.py
from django.http import HttpResponse
def home(request):
return HttpResponse("Welcome to Django")
urls.py
from django.urls import path
from .views import home
urlpatterns = [
path('', home),
]
When a user visits:
http://127.0.0.1:8000/
The home() function is executed and returns the response.
Understanding the Request Object
Every view receives a request object as its first parameter.
def home(request):
return HttpResponse("Hello World")
The request object contains information such as:
- HTTP method
- User information
- Session data
- Request headers
- Form data
Example:
def home(request):
return HttpResponse(request.method)
Output:
GET
Returning HTML Response
from django.http import HttpResponse
def home(request):
return HttpResponse("<h1>Welcome to Django</h1>")
Output:
<h1>Welcome to Django</h1>
Using Templates in FBV
views.py
from django.shortcuts import render
def home(request):
return render(request, 'home.html')
home.html
<h1>Welcome to Django</h1>
The render() function loads the template and returns an HTTP response.
Passing Data to Templates
views.py
from django.shortcuts import render
def home(request):
data = {
'name': 'Tarun',
'course': 'Django'
}
return render(request, 'home.html', data)
home.html
<h1>{{ name }}</h1>
<p>{{ course }}</p>
Output:
<h1>Tarun</h1>
<p>Django</p>
Handling GET Requests
from django.http import HttpResponse
def home(request):
if request.method == 'GET':
return HttpResponse("GET Request")
Handling POST Requests
from django.http import HttpResponse
def home(request):
if request.method == 'POST':
return HttpResponse("POST Request")
return HttpResponse("GET Request")
Accessing Query Parameters
URL:
http://127.0.0.1:8000/?name=Tarun
View:
def home(request):
name = request.GET.get('name')
return HttpResponse(name)
Output:
Tarun
Accessing Form Data
def submit_form(request):
if request.method == 'POST':
name = request.POST.get('name')
return HttpResponse(name)
return HttpResponse("Form Page")
Advantages of FBV
- Easy to understand
- Simple syntax
- Better for small applications
- Full control over logic
Disadvantages of FBV
- Code repetition in large projects
- Harder to maintain complex views
- Less reusable than Class-Based Views