Django Predefine View Classes, CreateView, ListView, FormView, DetailsView and UpdateView

0

 


These all are predefined class view that is used to perform database operation.


1)  CreateView Example:-


1 ) Create Model Class:-

class Job(models.Model):

    jobtitle = models.CharField(max_length=100)

    jobdescription = models.CharField(max_length=500)


2)  Create Classview under views.py


from django.views.generic.edit import CreateView

from django.urls import reverse


class JobCreate(CreateView):

  model = Job

  fields = ['jobtitle', 'jobdescription']

  success_url='path'


3)  create path urls.py:-

from .views import JobCreate

path('jobcreate',JobCreate.as_view())


4)  create HTML file under template and name will job_form.html

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>

    <form method="post">

        {% csrf_token %}

        {{ form.as_p }}

        <input type="submit" value="Submit">


    </form>

</body>

</html>

2)  Example of ListView:-

1)  Define the model if not exist, in this example, I am using Job model

2)  Create ListView Class under views.py file

from django.views.generic.list import ListView

class JobList(ListView):

  model = Job   # Job.objects.all()   

3) create the template file or HTML file whose name must be modelclassname_list, I have created job_list.html and written the following code.


<div>

    {% for object in object_list %}

    <!-- Display Objects -->

    <li>{{ object.jobtitle }}</li>

    <li>{{ object.jobdescription }}</li>

   

    <hr/>

    <!-- If object_list is empty  -->

    {% empty %}

    <li>No objects yet.</li>

    {% endfor %}

</div>


4)  create urls.py and write the following code:-

path('joblist',JobList.as_view())



Code of Update, Delete, and Details View:-

1)  Create path under urls.py

 from .views import JobCreate,JobList,JobDetail,JobUpdate,JobDelete

 path('<pk>',JobDetail.as_view()),

    path('<pk>/jupdate',JobUpdate.as_view()),

     path('<pk>/jdelete',JobDelete.as_view())


2)  Create a model class, I have used the same Job Model

3)  Create Classes under views.py 

from django.views.generic.detail import DetailView

from django.views.generic.edit import UpdateView

from django.views.generic.edit import DeleteView


class JobDetail(DetailView):

  model = Job   # Job.objects.all()   


class JobUpdate(UpdateView):

  model = Job

  fields = ['jobtitle', 'jobdescription']

  success_url = '/guest/joblist'

class JobDelete(DeleteView):

  model = Job

  

  success_url = '/guest/joblist'


4)  create HTML file modelclassname_detail, modelclass_form and modelclass_confirm_delete.

for updateview and createview template page will be common.


Code of job_detail.html


<h1>{{ object.jobtitle }}</h1>

<p>{{ object.jobdescription }}</p>


Code of job_confirm_delete.html


<form method="post">{% csrf_token %}

 <p>Are you sure you want to delete "{{ object }}"?</p>

     <input type="submit" value="Confirm">

   </form>


5) Link all URLs under job_list.html


<div>

    {% for object in object_list %}

    <!-- Display Objects -->

    <li>{{ object.jobtitle }}</li>

    <li>{{ object.jobdescription }}</li>

   <a href="/guest/{{object.id}}">View Job</a>

   <a href="/guest/{{object.id}}/jupdate">Update Job</a>

   <a href="/guest/{{object.id}}/jdelete">Delete Job</a>

    <hr/>

    <!-- If object_list is empty  -->

    {% empty %}

    <li>No objects yet.</li>

    {% endfor %}

</div>




Post a Comment

0Comments

POST Answer of Questions and ASK to Doubt

Post a Comment (0)