votes
votes copied to clipboard
Like Dislike app based on Django Rest Framework
============================= DRF Votes
.. image:: https://badge.fury.io/py/votes.png :target: https://badge.fury.io/py/votes
DRF Vote is a simple Django Rest Framework app to add ability to like/dislike a model.
Blog
You can read more about it on my blog_
.. _blog: https://medium.com/tixdo-labs/vote-your-model-with-no-pain-9d7670b65bfd#.5q8jkl7xt.
Quickstart
Note
User must be logged-in to user user-specific apis.
-
Install votes::
pip install votes
-
Add
'votes'to yourINSTALLED_APPSsetting like this::INSTALLED_APPS = ( ... 'votes', )
-
Run
python manage.py syncdbto create the vote models. -
Declare vote field to the model you want to vote::
from votes.managers import VotableManager
class ArticleReview(models.Model): ... votes = VotableManager()
-
Include votes url to your urls.py file::
from django.conf.urls import include from django.conf.urls import url
from votes import urls
urlpatterns += [ url(r'^', include(urls)), ]
===== DRF Vote
This is extended version of repo django-vote_
.. _django-vote: https://github.com/Beeblio/django-vote
DRF Vote is a simple Django Rest Framework app to add ability to like/dislike a model.
You can read more about it on my blog post_
.. _post: https://medium.com/@3117Jain/vote-your-model-with-no-pain-9d7670b65bfd#.3zttxekr2
===== How is it different ?
- Modified to work with django rest framework.
- A new feature of disliking an object is added in this version.
APIs
/votes/up/
Adds a new like or dislike vote to the object
-
param: model, id, vote i.e. model=movies&id=359&vote=true
-
vote=option[true for up-vote, false for down-vote, None for no-vote]
This api is used for both liking and disliking the object. Send vote=true for like vote=false for dislike
/votes/down/
Removes vote to the object
- param: model, id i.e. model=movies&id=359
/votes/exists/
Check if the user already voted the object
- param: model, id i.e. model=movies&id=359
/votes/all/
return all instances voted by user
- param: model, id i.e. model=movies&id=359
/votes/count/
Returns the number of votes for the object
- param: model, id i.e. model=movies&id=359
/votes/users/
Returns a list of users who voted and their voting date
- param: model, id i.e. model=movies&id=359
/votes/likes/
Returns the number of likes and dislikes for the object.
- param: model, id i.e. model=movies&id=359
Running Tests
Does the code actually work?
::
source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install -r requirements-test.txt
(myenv) $ python runtests.py
Credits
Tools used in rendering this package:
- Cookiecutter_
cookiecutter-pypackage_
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _cookiecutter-djangopackage: https://github.com/pydanny/cookiecutter-djangopackage