如何用' @'提及/标记用户在django开发的项目上

时间:2017-10-25 11:16:31

标签: python django django-templates instagram social-networking

我正在尝试实施" @"在Twitter等社交网站上使用的功能,用于标记或提及我的django项目中的用户。比方说," @ stack"单击时应该转到堆栈的配置文件。

如何做到这对我有帮助。

1 个答案:

答案 0 :(得分:2)

提交系统是否在编辑处理?以下django-markdown-editor提供直接提及用户@[username] => @username

另请参阅函数markdown_find_mentions,如果您需要为其他用户提到的用户实现通知系统,例如stackoverflow,则非常有用。

def markdown_find_mentions(markdown_text):
    """
    To find the users that mentioned
    on markdown content using `BeautifulShoup`.

    input  : `markdown_text` or markdown content.
    return : `list` of usernames.
    """
    mark = markdownify(markdown_text)
    soup = BeautifulSoup(mark, 'html.parser')
    return list(set(
        username.text[1::] for username in
        soup.findAll('a', {'class': 'direct-mention-link'})
    ))

这是一个简单的流程;

  1. 创建评论/帖子/ etc时,找到所有提到的用户并创建通知。
  2. 编辑纪念片/帖子/等时,找到所有提到的新用户并创建通知。
  3.   

    确保通知有发件人和收件人。

    class Notification(TimeStampedModel):
        sender = models.ForeignKey(User, related_name='sender_n')
        receiver = models.ForeignKey(User, related_name='receiver_n')
        content_type = models.ForeignKey(ContentType, related_name='n', on_delete=models.CASCADE)
        object_id = models.PositiveIntegerField()
        content_object = GenericForeignKey('content_type', 'object_id')
        read = models.BooleanField(default=False)
    
        ....