A simple app for Django that enables users to like and unlike any object/item within any model. It generates a like button for your objects.
Switch branches/tags
Clone or download
Pull request Compare This branch is 9 commits ahead, 8 commits behind streema:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
like
.gitignore
LICENSE
MANIFEST.in
README.md
setup.py

README.md

django-likeit

A simple app for Django that enables users to like and unlike any object/item within any model. It's developed on Python 3.5 & Python 3.6 for Django 1.10 and later.

Installation

  • Install django-likeit in your vilrtual env:
pip install django-likeit
  • Add the app to your settings.py
INSTALLED_APPS = [
  ...
  "like",
  ...
]
  • Add likeit urls to your project's urls.py file:
from django.conf.urls import url, include

urlpatterns = [
  ...
  url(r'^like/', include('like.urls')),
  ...
]
  • Migrations:
python manage.py makemigrations like
python manage.py migrate
  • Make sure you have jQuery ajax CSRF configuration right, and also you included Font Awesome in your HTML.

Usage:

Template tags:

  • Get the liked objects for a given user:
{% with user_likes <user> "app_label.model" as like_list %}
    {% for like_obj in like_list %}
        {# do something with like_obj #}
    {% endfor %}
{% endwith %}
  • Given an object obj you may show it like count like this:
<p>Like Count {{ obj|likes_count }}</p>
  • Get Like instance for an object (obj) and a user (user)
{% with obj|get_like_for:user as like_object %}
    ...
{% endwith %}
  • Like Button for an object my_obj:
{% like_button my_obj %}

Likes Manager

  • Create a Like instance for a user and object:
>>> from django.contrib.auth.models import User
>>> from music.models import Song
>>> user = User.objects.get(username='jdoe')
>>> song = Song.objects.get(pk=1)
>>> like = Like.objects.create(user, song)
or:
>>> like = Like.objects.create(user, 1, Song)
or:
>>> like = Like.objects.create(user, 1, "music.Song")
  • Get the objects liked by a given user:
>>> from django.contrib.auth.models import User
>>> user = User.objects.get(username='jdoe')
>>> Like.objects.for_user(user)
>>> [<Like: Like object 1>, <Like: Like object 2>, <Like: Like object 3>]
  • Now, get user liked objects belonging to a given model:
>>> from django.contrib.auth.models import User
>>> from music.models import Song
>>> user = User.objects.get(username='jdoe')
>>> Like.objects.for_user(user, model=Song)
>>> [<Like: Like object 1>, <Like: Like object 2>, <Like: Like object 3>]
  • Get the liked object instances of a given model liked by any user:
>>> from music.models import Song
>>> Like.objects.for_model(Song)
>>> [<Like: Like object 1>, <Like: Like object 2>, <Like: Like object 3>]
  • Get a Like instance for a given object and user:
>>> from django.contrib.auth.models import User
>>> from music.models import Song
>>> user = User.objects.get(username='jdoe')
>>> song = Song.objects.get(pk=1)
>>> like = Like.objects.get_like(user, song)
  • Get all Like instances for a given object
>>> from music.models import Song
>>> song = Song.objects.get(pk=1)
>>> like = Like.objects.for_object(song)