How to Use DetailView in Django?

Published On: 19/09/2022 | Category: Django

Hi Dev,

This article will provide some of the most important example how to use detailview in django. In this article, we will implement a how to use detailview in django with example. This article will give you simple example of django detailview class based views example. I explained simply step by step django generic detailview example.

Django Class based views are simpler and efficient to manage than function-based views. A function based view with tons of lines of code can be converted into a class based views comes with few lines only.

So, in this example, DetailView is a class view that helps you to display a DetailView refers to a view (logic) to display one instances of a table in the database the object through template render.

let's see bellow example here you will learn how to use detailview in django.

Step 1: Create a Project

In this step, we’ll create a new django project using the django-admin. Head back to your command-line interface and run the following command:

django-admin startproject example

Step 2: Create a App

Now we'll create a single app called core to store a list of post names. We're keeping things intentionally basic. Stop the local server with Control+c and use the startapp command to create this new app.

python3 startapp core

Step 3: Update

Next, then update INSTALLED_APPS within our file to notify Django about the app.

Next, you need to add it in the file as follows:


Step 4: Creating the Model

In this step we will require the database model for storing article details in article table.Open the file and add the following code:

from django.db import models

class Article(models.Model):
    title= models.CharField(max_length=300)
    content= models.TextField()
    pub_date = models.DateTimeField(auto_now_add= True)

Ok, all set. We can engender a migrations file for this change, then integrate it to our database via migrate.

python makemigrations
python migrate

Step 5: Creating the Views

In this step, we need to configure our views. The ArticleDetailView page will template and define and Article model as well as, open the file and add:

from django.shortcuts import render
from django.views.generic.detail import DetailView
from .models import *

class ArticleDetailView(DetailView):
    model = Article
    get_context_name = 'article'

    def get_context_data(self, *args, **kwargs):
        context = super(ArticleDetailView,
             self).get_context_data(*args, **kwargs)

        # add extra field 
        context["category"] = "Django"        
        return context

Step 6: Creating the Template

Next, then with your text editor create new templates files: core/templates/article_detail.html file and the add:

<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8">
    <link rel="stylesheet" href="[email protected]/dist/css/bootstrap.min.css">
    <style type="text/css">
            background-color: #f7fcff;
    <div class="container mt-5 pt-5">
        <div class="row d-flex justify-content-center">
            <div class="col-md-10">
                <div class="card">
                    <div class="card-header">
                        <h4>How to Use DetailView in Django? - <span class="text-primary"></span></h4>
                    <div class="card-body">
                        <div class="row">
                            <div class="col-md-12">
                                <h3>{{ article.title }}</h3>
                            <div class="col-md-12">
                                <p>{{ article.content }}</p>
                        <div class="row">
                            <div class="col-md-12">
                                <a href="#"><span class="badge badge-primary">#{{ category }}</span></a>

Step 7: Creating URLs

In this section, we need a file within the core app however Django doesn't create one for us with the startapp command. Create core/ with your text editor and within this file we'll import yet-to-be-created function for each--ArticleDetailView Note as well that we set an optional URL name for each.

Here's what it looks like:

from django.urls import path
from .views import ArticleDetailView

urlpatterns = [
    path('<pk>/', ArticleDetailView.as_view()),

Next, we require to add a URL path for our example app which can be done by importing include and setting a path for it.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('', include('core.urls')),

Run the Server

In this step, we’ll run the local development server for playing with our app without deploying it to the web.

python runserver

Next, go to the http://localhost:8000/{id} address with a web browser.

I Hope It will help you....

Happy Pythonic Coding!