【发布时间】:2020-03-04 15:35:31
【问题描述】:
我正在通过 django 通知向用户发送通知。而且我有用户名正则表达式在 html 上工作,因此任何使用 @username 的 cmet 都会发布并且 html 是可链接的,因此单击 @username 它将带他到用户名配置文件页面。现在我正在使用 django 信号来匹配用户名并打印出用户名。但是当我使用通知发送通知时。这没用。 模型.py:
class Comment(models.Model):
post = models.ForeignKey(post, on_delete=models.CASCADE, related_name='comments')
user = models.ForeignKey(User, on_delete=models.CASCADE)
reply = models.ForeignKey('Comment', null=True, related_name='replies', on_delete=models.CASCADE)
content = models.TextField()
image = models.ImageField(upload_to='comments-pics', null=True, blank=True)
voice_record = models.FileField(upload_to='voice-comments', null=True, blank=True)
timestamp = models.DateTimeField(auto_now_add=True)
def __str__ (self):
return '{}.{}'.format(self.post.title, str(self.user.username))
def save(self, *args, **kwargs):
super(Comment, self).save(*args, **kwargs)
def Comment_save_receiver(sender, instance, created, *args,**kwargs):
if created and not instance.parent:
user_regex = r'@(?P<username>[\w.@+-]+)'
m = re.search(user_regex, instance.content)
if m:
try:
recipient = User.objects.get(username=m.group('username'))
except (User.DoesNotExist, User.MultipleObjectsReturned):
pass
else:
notify.send(instance.user, recipient=recipient, actor=instance.user, verb='mention you in a post', target=instance, nf_type='tagged_by_one_user')
post_save.connect(Comment_save_receiver, sender=post)
【问题讨论】:
-
请提供更多关于它不起作用的信息。您尝试过什么,您期望发生什么以及实际发生了什么?你有任何额外的调试上下文吗?
-
请更正您的缩进以完全匹配您的代码中的内容。这可能会给您带来问题,现在很难说。
-
先生,它应该向用户发送通知,就像用户在 cmets 中提及用户一样
-
如果有人喜欢或发表评论,我正在使用 django 通知向用户发送通知..它会通知他们..并且评论表单采用 ajax 表单方法..所以我无法获得实际错误
-
如果发生任何错误,它会阻止表单提交..但它没有收到任何错误。我的实例有问题。
标签: django django-models