Django Comment app. It can be associated with any given model.
Project description
django-comments-dab
Thanks https://www.pythonanywhere.com/
Here is a live demo
Full Documentation
Content:
Introduction
dab stands for Django-Ajax-Bootstrap PS: Ajax and JQuery are not used anymore since v2.0.0 Vanilla JS and fetch API is used instead.
django-comments-dab is a commenting application for Django-powered websites.
It allows you to integrate commenting functionality with any model you have e.g. blogs, pictures, video etc…
List of actions that can be performed:
Post a new comment. (v2.0.0 authenticated and anonymous users)
Reply to an existing comment. (v2.0.0 authenticated and anonymous users)
Edit a comment. (authenticated user comment owner)
Delete a comment. (authenticated user comment owner and admins)
React to a comment. (authenticated users) Available reactions are LIKE and DISLIKE # open PR if you would like to have more reactions
Report (flag) a comment. (authenticated users)
Delete flagged comment. (admins and moderators)
Resolve or reject flag. This is used to revoke the flagged comment state (admins and moderators)
Follow and unfollow thread. (authenticated users)
All actions are done by Fetch API since V2.0.0
Bootstrap 4.1.1 is used in comment templates for responsive design.
Installation
Requirements:
django>=2.1
djangorestframework # only for the API Framework
Bootstrap 4.1.1
Installation:
Installation is available via pip
$ pip install django-comments-dab
or via source on github
$ git clone https://github.com/radi85/Comment.git $ cd Comment $ python setup.py install
Migrations:
Migrate comment app:
$ python manage.py migrate comment
Setup
Step 1 - Connecting comment model with the target model
In models.py add the field comments as a GenericRelation field to the required model.
PS: Please note that the field name must be comments NOT comment.
E.g. Post model, as shown below:
from django.contrib.contenttypes.fields import GenericRelation
from comment.models import Comment
class Post(models.Model):
author = models.ForeignKey(User)
title = models.CharField(max_length=200)
body = models.TextField()
# the field name should be comments
comments = GenericRelation(Comment)
Usage
1. Basics usage:
include_bootstrap tag is for bootstrap-4.1.1, if it’s already used in the project, get rid of this tag.
In the template (e.g. post_detail.) add the following template tags where obj is the instance of post model.
{% load comment_tags %} {# Loading the template tag #}
{% render_comments obj request %} {# Render all the comments belong to the passed object "obj" #}
{% include_bootstrap %} {# Include bootstrap 4.1.1 - remove this line if BS is already used in your project #}
2. Advanced usage:
For advanced usage and other documentation, you may read the Documentation or look at the docs directory in the repository.
Example
You can play with the example app using local virtual environment
$ git clone https://github.com/Radi85/Comment.git # or clone your forked repo
$ cd Comment
$ python3 -m venv local_env # or any name. local_env is in .gitignore
$ export DEBUG=True
$ source local_env/bin/activate
$ pip install -r test/example/requirements.txt
$ python manage.py migrate
$ python manage.py create_initial_data
$ python manage.py runserver
Or run with docker
$ git clone https://github.com/Radi85/Comment.git # or clone your forked repo
$ cd Comment
$ docker-compose up
Login with:
username: test
password: test
The icons are picked from Feather. Many thanks to them for the good work.
Email’s HTML template is used from https://github.com/leemunroe/responsive-html-email-template
Contributing
For contributing, please see the instructions at Contributing
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
Hashes for django-comments-dab-2.6.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fedd7965c3cbc78c72dd5b69e5658d37e1e5a4e944a768e6b53021316eecadf |
|
MD5 | 5124bdba291e58696a1bf1e52d5c6d21 |
|
BLAKE2b-256 | 276e08a4e20012b40a5a9b6226631a470d47f087178e5093aa4b0a4b860f4a7b |
Comment Settings and urls:
settings.py should look like this:
In urls.py: