Django likes app
Project description
django-ok-likes is a liking app for Django, which allows users “like” and “unlike” any model instance. All functionality provides through django-rest-framework API views. Template tags and jinja’s global functions provide the ability to see who liked an object, which objects were liked by current user and count of likes for a given object.
Installation
Install with pip:
pip install django-ok-likes
Update INSTALLED_APPS:
INSTALLED_APPS = [
...
'likes',
'rest_framework',
...
]
Make migrations:
python manage.py migrate
Add likes.api.urls to your project urlpatterns:
urlpatterns = [
...
path('api/v1/', include('likes.api.urls')),
...
]
Available settings
Add the models that you want to like to LIKES_MODELS in your settings file:
LIKES_MODELS = {
"app.Model": {
'serializer': 'app.api.serializer.YourModelSerializer'
},
}
You can set any pagination class for ListAPIView:
LIKES_REST_PAGINATION_CLASS = 'core.api.pagination.MyResponsePagination'
Usage
API
Base endpoints
/api/v1/likes/list/ - List API View to return all likes for authenticated user.
You can set serializer for each model in LIKES_MODELS setting to use it for content object serialization, otherwise, you will get an id of content object.
For example:
LIKE_MODELS = { "article.Article": { 'serializer': 'article.api.serializers.ArticleSerializer' }, }
Use GET parameter search to filter by a content type’s model: /api/v1/likes/list/?search=article
/api/v1/likes/count/ - API View to return count of likes for authenticated user.
/api/v1/likes/is/ - API View to check is given elements are liked by authenticated user. As result, you will get a list of ids.
Possible payload:
{ "type": 'app_label.model', # '.'.join(object_ct.natural_key()) "ids": [1,2,3] }
Possible result:
{ "ids": [1,3] }
/api/v1/likes/toggle/ - API View to like-unlike a given object by authenticated user.
Possible payload:
{ "type": 'app_label.model', # '.'.join(object_ct.natural_key()) "id": 1 }
Possible result:
{ "is_liked": true }
Filters
likes_count
Returns a count of likes for a given object:
{{ object|likes_count }}
Jinja global functions
get_likes_count
The same as the likes_count filter.
Usage:
{{ get_likes_count(object) }}
get_who_liked
The same as the who_liked tag.
Usage:
{{ get_who_liked(object) }}
get_likes
The same as the likes tag.
Usage:
{{ get_likes(request.user) }}
get_is_liked
The same as the is_liked tag.
Usage:
{{ get_is_liked(object, request.user) }}
Signals
likes.signals.object_liked
A signal, which sents immediately after the object was liked and provides the single kwarg of created Like instance.
likes.signals.object_unliked
A signal, which sents immediately after the object was unliked and provides the single kwarg of an object.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_ok_likes-0.7.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9fc6236aba31b8454c017151809334f26be54d575a151907d00e8cd701ca249b |
|
MD5 | d6974dded18055ef4c26c8b27c108be1 |
|
BLAKE2b-256 | 27cf6fa9190df1d0636eb96b0f7ca2b185c6f7b42e055a4d51e79fe83ae79545 |