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
File details
Details for the file django-ok-likes-0.7.4.tar.gz
.
File metadata
- Download URL: django-ok-likes-0.7.4.tar.gz
- Upload date:
- Size: 14.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b5d4305823b4b238a2441df5a5971dd4222092970d289b20114296689d4946c |
|
MD5 | 938dd72a039e0980e8c0404e2d87bfce |
|
BLAKE2b-256 | e93c9ebd9c26bec8162f367738383f8a2ec18120e45210d1f215246b2059cdf6 |
File details
Details for the file django_ok_likes-0.7.4-py3-none-any.whl
.
File metadata
- Download URL: django_ok_likes-0.7.4-py3-none-any.whl
- Upload date:
- Size: 20.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9fc6236aba31b8454c017151809334f26be54d575a151907d00e8cd701ca249b |
|
MD5 | d6974dded18055ef4c26c8b27c108be1 |
|
BLAKE2b-256 | 27cf6fa9190df1d0636eb96b0f7ca2b185c6f7b42e055a4d51e79fe83ae79545 |