UsageΒΆ
To use django-mentions in a project, add it to your INSTALLED_APPS:
INSTALLED_APPS = (
...
'mentions',
...
)
Define a signal for the callback
from django.dispatch import receiver
from django.core.signals import request_finished
@receiver(request_finished)
def post_detect_mention_callback(sender, **kwargs):
""" You will receive information of the mention
user_from: kwargs.get('user_from')
User that mentions
object_pk: kwargs.get('object_pk')
User's Pk that has been mentioned
target: kwargs.get('target')
The object where the mention was made
"""
# Your code here
Register a model and field in which you want to detect mentions. You can override the pattern if you want.
from django.apps import AppConfig
from mentions.registry import register
class MyAppConfig(AppConfig):
name = 'myapp'
def ready(self):
model = Post
field = 'description'
callback = post_detect_mention_callback
register(model, field, callback)
At this point the library will notify to the callback each time there is a mention in the field of the registered model. Thats all! :)
def register(model, field, callback, pattern):
"""
This method handles the mentions about the model in the field and notify to the callback when there is any mention
Parameters
----------
model : Models
The model to register for detect mentions
field : str
Field of the model to detect mentions
callback : function
Callback function to notify when there are mentions
pattern : regular expression
The pattern to codify the mentions (default r'class="mention" data-user=[\'"]?([^\'" >]+)')
"""