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=[\'"]?([^\'" >]+)') """