Django Comment Framework app. It can be associated with any given model.
Project description
dab stands for Django-Ajax-Bootstrap
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, etc…
List of actions you can do:
Add a comment. (Authenticated)
Edit a comment you posted. (Authenticated)
Delete a comment you posted. (Authenticated)
All actions are done by ajax - JQuery 3.2.1
Bootstrap 4.1.1 is used in comment templates for responsive design.
Installation
Requirements:
django-widget-tweaks==1.4.2
Bootstrap 4.1.1
jQuery 3.2.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
Settings and urls:
Add comment to your installed_apps in your settings.py file. It should be added after django.contrib.auth. and,
Make sure that widget-tweaks is already included in installed_apps as well.
LOGIN_URL shall be defined in the settings.
your settings.py should look like the following:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
...
'widget-tweaks',
'comment',
..
)
LOGIN_URL = 'login' # or your actual url
In your urls.py:
urlpatterns = patterns('',
...
path('comment/', include('comment.urls')),
...
)
Migrations:
Migrate comment app:
$ python manage.py migrate comment
Setup
Step 1
In your models.py add the field comments (Please note that field name must be comments not comment) to the model for which comments should be added (e.g. Post) and the appropriate imports 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)
Step 2
get_comments tag uses 2 positional and 3 optional args:
The instance of the model. (positional)
Request object. (positional)
oauth. (optional - Default is false)
paginate. (optional - Default is false)
cpp (number of Comments Per Page - Default is 10)
1. Basics usage:
include_static this tag will include required jquery and javascript file, if you already use jquery please make sure it is not the slim version which doesn’t support ajax. include_bootstrap tag is for bootstrap-4.1.1, if it’s already included in your project, get rid of this tag.
In your template (e.g. post-detail.html) add the following template tags where object is the instance of post model.
{% load comment_tags %} # Loading the template tag
{% get_comments object request %} # Include all the comments belonging to a certain object
{% include_bootstrap %} # Include bootstrap 4.1.1 - remove this line if BS 4.1.1 is already used in your project
{% include_static %} # Include jQuery 3.2.1 and required js file
2. Advanced usage:
1. Add pagination:
To add pagination to your comments, you need to pass two variables to the get_comments tag. paginate must be set to True and set cpp var (number of comments per page - default is 10) to the desired number of comments per page. e.g. If you would like to have 5 comments per page, the get_comments tag should look like this:
{% load comment_tags %} # Loading the template tag {% get_comments object request paginate=True cpp=5 %} # Include all the comments belonging to a certain object {% include_bootstrap %} # Include bootstrap 4.1.1 - remove this line if BS 4.1.1 is already used in your project {% include_static %} # Include jQuery 3.2.1 and required js file
2. Integrate existing profile app with comments app:
If you have profile model for the user and you would like to show the profile image on each comment, you need to do these two steps:
- Assign PROFILE_APP_NAME and PROFILE_MODEL_NAME variables in your settings.py file.
(e.g if user profile app is called accounts and profile model is called UserProfile) Update your settings.py as follows:
PROFILE_APP_NAME = 'accounts' PROFILE_MODEL_NAME = 'UserProfile' # letter case insensitive
- Make sure that get_absolute_url method is defined in your profile model.
Update your user profile model as follows:
from django.urls import reverse class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) ... ... # this method must be defined for appropriate url mapping in comments section def get_absolute_url(self): return reverse('profile_url_name')
Customize Styling
- If you want to customize the default style of comments app , you can do the following steps:
Create a comment.css file inside your static/css directory.
The new created file will overwrite the original file used in the app.
and you’re done.
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-1.1.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5092e1317588ac663320eebef8497998b17a483f7f94cf4ff10ce3cf5c2b32b1 |
|
MD5 | 414d88227d9aadedd478fe2b3db01bbe |
|
BLAKE2b-256 | 3ee32917d535d693777178b5f2c7a05dd5a8f9871763df3697d454fc6a356a6c |