Как добавить лайки в блог
Михаил Попов 13.11.2015 04:09 Python , Модели нет комментариевПродолжаю развивать свой блог. Статьи о том, как я начинал его делать можно посмотреть тут и тут. У Вадима Полшкова подсмотрел добавление лайков в блог. Также увидел тоже самое у Сергея Ганжелы. В общем стадный инстинкт сработал и мне захотелось того же. Только интереснее, так что решил сделать 2 пальца - один вверх, в другой вниз, т.к. я хочу и положительные моменты рассматривать и отрицательные.
Чтобы хранить количество лайков и дислайков, добавляем 2 значения в модель Article
в модуле models.py. Это будут числовые поля, по умолчанию равны нулю:
class Article(Record):
...
likes = models.IntegerField(verbose_name='Нравится', default=0)
dislikes = models.IntegerField(verbose_name='Не нравится', default=0)
Теперь добавляем изменения в views.py, чтобы можно было увеличивать значения. После нажатия на кнопку, будем возвращаться обратно на ту же страницу. Чтобы это сделать, будем передавать в параметрах запроса GET
в параметре next
значение текущей страницы. Может быть это можно сделать как то проще, но я не знаю как. Может быть кто подскажет.
def add_like(request, slug):
try:
article = get_object_or_404(Article, slug=slug)
article.likes += 1
article.save()
except ObjectDoesNotExist:
return Http404
return redirect(request.GET.get('next', '/'))
def add_dislike(request, slug):
try:
article = get_object_or_404(Article, slug=slug)
article.dislikes += 1
article.save()
except ObjectDoesNotExist:
return Http404
return redirect(request.GET.get('next', '/'))
Немного меняем urlpatterns
в urls.py, чтобы работали наши новые ссылки на addlike
и adddislike
:
# coding: utf-8
from django.conf.urls import url
from blog.views import all_articles, one_article, one_article_by_slug, add_like, add_dislike
urlpatterns = [
url(r'^$', all_articles, name='all_articles'),
url(r'^(?P<art_id>d+)$', one_article, name='one_article'),
url(r'^(?P<slug>S+)/addlike/$', add_like, name='add_like'),
url(r'^(?P<slug>S+)/adddislike/$', add_dislike, name='add_dislike'),
url(r'^(?P<slug>S+)/$', one_article_by_slug, name='one_article_by_slug'),
]
И немного меняем шаблон формы нашей статьи в файле post.html:
{% extends 'main.html' %}
{% block content %}
{% load disqus_tags %}
<div>
<p>
<h3>{{ object.title }}</h3>
<small><i class="fa fa-user" title="Автор"></i> Михаил Попов
<i class="fa fa-calendar-o" title="Дата публикации"></i> {{ object.add_date|date:"d.m.Y" }}
<i class="fa fa-clock-o" title="Время публикации"></i> {{ object.add_date|time:"H:i" }}
<i class="fa fa-tags" title="Тэги"></i> {{ object.tags.all|join:", " }}
<i class="fa fa-comments-o" title="Комментарии"></i>
<a href="{{ object.get_absolute_url }}#disqus_thread"
data-disqus-identifier="{{ object.get_absolute_url }}">нет комментариев</a></small>
</p>
{{ object.body|safe }}
{% disqus_num_replies %}
<table width="100%">
<tr>
<td width="50%">
<a href="{{ object.get_absolute_url }}addlike/?next={{ object.get_absolute_url|urlencode:"" }}"><i
style="color:#449d44" class="fa fa-thumbs-o-up fa-2x"></i></a> <span
class="lead">{{ object.likes }}</span>
<a href="{{ object.get_absolute_url }}adddislike/?next={{ object.get_absolute_url|urlencode:"" }}"><i
style="color:#942a25" class="fa fa-thumbs-o-up fa-2x fa-rotate-180"></i></a> <span
class="lead">{{ object.dislikes }}</span></td>
<td width="50%">{% include "social.html" %}</td>
</tr>
</table>
<br>
</div>
{% include "disqus.html" %}
{% endblock %}
Напомню, что теперь я использую fonts-awesome, который прикрутил еще во время работы над регистрацией через социальные сети. Его использование получается довольно хорошим. У этого шрифта довольно много возможностей, в частности тут я использую один и тот же символ, но поворачиваю его на 180 градусов, просто указав в классе символа дополнительный класс.
class="fa fa-thumbs-o-up fa-2x fa-rotate-180"
Также можно увеличивать символы, вращать их онлайн, обо всем этом написано в описании к библиотеке шрифта. Для программиста, желающего украсить свой скучный сайт - это просто находка.
В следующей статье рассмотрим, как сделать защиту от накрутки лайков, а также добавление лайков без перезагрузки страницы. В этом нам поможет javascript и библиотека jQuery.
Про жизнь и увлечения | Как зарегистрировать пользователя через социальные сети |
5 0 |