我正在尝试实施" @"在Twitter等社交网站上使用的功能,用于标记或提及我的django项目中的用户。比方说," @ stack"单击时应该转到堆栈的配置文件。
如何做到这对我有帮助。
答案 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'})
))
这是一个简单的流程;
确保通知有发件人和收件人。
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)
....