Skip to content

Commit 2eb7845

Browse files
committed
add button to like and unlike posts
1 parent adc3030 commit 2eb7845

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed

config/blog/templates/blog/blog_post.html

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,30 @@ <h1>{{ object.title }}</h1>
1818
</div>
1919
</div>
2020
</div>
21+
22+
<div class="row my-3">
23+
<div class="col-md-6 col-12 mx-md-auto mx-3">
24+
{% if object.likes.count == 1 %}
25+
<p>{{ object.likes.count }} person liked</p>
26+
{% else %}
27+
<p>{{ object.likes.count }} people liked</p>
28+
{% endif %}
29+
30+
{% if request.user.is_authenticated %}
31+
{% if liked_by_user %}
32+
<form method="POST" action="{% url 'like_article' object.id %}">
33+
{% csrf_token %}
34+
<button class="btn btn-outline-primary">unlike this post</button>
35+
</form>
36+
{% else %}
37+
<form method="POST" action="{% url 'like_article' object.id %}">
38+
{% csrf_token %}
39+
<button class="btn btn-outline-primary">like this post</button>
40+
</form>
41+
{% endif %}
42+
{% else %}
43+
<button class="btn btn-outline-primary" disabled>do you want like this post? so login here</button>
44+
{% endif %}
45+
</div>
46+
</div>
2147
{% endblock %}

config/blog/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66
path('tinymce/', include('tinymce.urls')),
77
path('about/', About.as_view(), name='about'),
88
path('<int:pk>/', DetailArticleView.as_view(), name='detail_article'),
9+
path('<int:pk>/like/', LikeArticle.as_view(), name='like_article'),
910
]

config/blog/views.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from django.shortcuts import render
1+
from django.shortcuts import render, redirect
22
from django.views import View
33
from django.views.generic import ListView, DetailView
44

@@ -15,6 +15,27 @@ class DetailArticleView(DetailView):
1515
model = Article
1616
template_name = 'blog/blog_post.html'
1717

18+
def get_context_data(self, *args, **kwargs):
19+
context = super(DetailArticleView, self).get_context_data(*args, **kwargs)
20+
context['liked_by_user'] = False
21+
article = Article.objects.get(id=self.kwargs.get('pk'))
22+
if article.likes.filter(pk=self.request.user.id).exists():
23+
context['liked_by_user'] = True
24+
25+
return context
26+
27+
class LikeArticle(View):
28+
def post(self, request, pk):
29+
article = Article.objects.get(id=pk)
30+
if article.likes.filter(pk=self.request.user.id).exists():
31+
article.likes.remove(request.user.id)
32+
else:
33+
article.likes.add(request.user.id)
34+
35+
article.save()
36+
return redirect('detail_article', pk)
37+
38+
1839

1940
class About(View):
2041
def get(self, request):

0 commit comments

Comments
 (0)