Django Class Based Views Blog App
Models
class Blog(models.Model):
title = models.CharField(max_length =200)
description = models.TextField()
def __str__(self):
return self.title
Python manage.py makemigrations
Python manage.py migrate
Python manage.py migrate
views
from .models import Blog
from django.views.generic.edit import CreateView
from django.views.generic.list import ListView
from django.views.generic.edit import DeleteView
from django.views.generic.edit import UpdateView
class BlogCreate(CreateView):
model = Blog
fields = '__all__'
success_url = '/blog'
class BlogList(ListView):
model = Blog
class BlogDelete(DeleteView):
model = Blog
success_url = '/list'
class BlogUpdate(UpdateView):
model = Blog
fields = '__all__'
template_name = 'dapp/blog_form.html'
success_url = '/list'
urls
from .views import BlogCreate
from .views import BlogList
from .views import BlogDelete
from .views import BlogUpdate
path('blog',BlogCreate.as_view()),
path('list',BlogList.as_view(),name='list'),
path('<pk>/delete/',BlogDelete.as_view(),name='delete'),
path('<pk>/update',BlogUpdate.as_view(),name='update')
Templates
Create a folder inside template
app/list
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Course</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container mt-5">
<ul>
{% for object in object_list %}
<li>{{ object.title }}</li>
<li>{{ object.description }}</li>
<a href="{% url 'update' object.pk %}" class="btn btn-info">Update</a>
<a href="{% url 'delete' object.pk %}" class="btn btn-danger">Delete</a>
<hr/>
{% empty %}
<li>No objects yet.</li>
{% endfor %}
</ul>
</div>
</body>
</html>
app/confirm_delete
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post">
{% csrf_token %}
<p>Are you sure you want to delete "{{ object }}"?</p>
<input type="submit" value="Confirm">
</form>
</body>
</html>
app/blog_form.html -(Create/update)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data">
<!-- Security token -->
{% csrf_token %}
<!-- Using the formset -->
{{ form.as_p }}
<input type="submit" value="Submit">
</form>
</body>
</html>
Comments
Post a Comment