Skip to content

Commit d96f79c

Browse files
committed
Add delete functionality to Blog Post
1 parent d3bbfe9 commit d96f79c

File tree

6 files changed

+41
-3
lines changed

6 files changed

+41
-3
lines changed

blog/templates/blog/base.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
<!-- Navbar Right Side -->
3434
<div class="navbar-nav">
3535
{% if user.is_authenticated %}
36+
<a class="nav-item nav-link" href="{% url 'post-create' %}">New Post</a>
3637
<a class="nav-item nav-link" href="{% url 'profile' %}">Profile</a>
3738
<a class="nav-item nav-link" href="{% url 'logout' %}">Logout</a>
3839

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{% extends "blog/base.html" %}
2+
{% block content %}
3+
<div class="content-section">
4+
<form method="POST">
5+
{% csrf_token %}
6+
<fieldset class="form-group">
7+
<legend class="border-button mb-4">Delete Post</legend>
8+
<h2>Are you sure you want to delete the post? "{{ obj.title }}"</h2>
9+
</fieldset>
10+
<div class="form-group">
11+
<button class="btn btn-outline-danger" type="submit">Yes, Delete</button>
12+
<a class="btn btn-outline-secondary" href="{% url 'post-detail' object.id %}" >Cancel</a>
13+
</div>
14+
</form>
15+
</div>
16+
{% endblock content %}
17+

blog/templates/blog/post_detail.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@
66
<div class="article-metadata">
77
<a class="mr-2" href="#">{{ object.author }}</a>
88
<small class="text-muted">{{ object.date_posted | date:"F d, Y" }}</small>
9+
{% if object.author == user %}
10+
<div>
11+
<a class='btn btn-secondary btn-sm mt-1 mb-1' href="{% url 'post-update' object.id %}">Update</a>
12+
<a class='btn btn-danger btn-sm mt-1 mb-1' href="{% url 'post-delete' object.id %}">Delete</a>
13+
</div>
14+
15+
{% endif %}
916
</div>
1017
<h2 class="article-title">{{ object.title }}</h2>
1118
<p class="article-content">{{ object.content }}</p>

blog/urls.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33
PostListView,
44
PostDetailView,
55
PostCreateView,
6-
PostUpdateView)
6+
PostUpdateView,
7+
PostDeleteView
8+
)
79
from . import views
810

911
urlpatterns = [
1012
path('', PostListView.as_view(), name='blog-home'),
1113
path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
1214
path('post/new', PostCreateView.as_view(), name='post-create'),
1315
path('post/<int:pk>/update', PostUpdateView.as_view(), name='post-update'),
16+
path('post/<int:pk>/delete', PostDeleteView.as_view(), name='post-delete'),
1417
path('about/', views.about, name='blog-about'),
1518
]

blog/views.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
ListView,
66
DetailView,
77
CreateView,
8-
UpdateView)
8+
UpdateView,
9+
DeleteView)
910
from .models import Post
1011

1112

@@ -42,7 +43,16 @@ def form_valid(self, form):
4243

4344
def test_func(self):
4445
post = self.get_object()
45-
if self.request.uesr == post.author:
46+
if self.request.user == post.author:
47+
return True
48+
return False
49+
50+
class PostDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
51+
model = Post
52+
success_url = '/'
53+
def test_func(self):
54+
post = self.get_object()
55+
if self.request.user == post.author:
4656
return True
4757
return False
4858

db.sqlite3

0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)