【问题标题】:How to notify users of new blog post via django?如何通过 django 通知用户新的博客文章?
【发布时间】:2026-02-09 16:00:02
【问题描述】:

我正在使用 Django Rest Framework、Flutter 和 MongoDB 构建一个移动应用程序。在该应用程序中,用户可以查看其他用户发布的帖子。 在我的 Django 应用程序中,我没有任何通知模型(老实说,我也不知道如何使用它!)。 在 Django 中,我创建了端点来创建帖子

@api_view(['POST'])
def createPost(request):
   code/logic...

,并检索帖子

class blogsViewSet(ModelViewSet):
    queryset = Posts.objects.all()
    serializer_class = PostSerializer
    pagination_class = pagination.CustomPagination
    
    def list(self, request, *args, **kwargs):
        uid = request.META.get('HTTP_DATA')
        context = {"user": uid}
        queryset = Posts.objects.all().order_by('postID')
        paginatedResult = self.paginate_queryset(queryset)
        serializer = self.get_serializer(paginatedResult, many=True, context= context)
        return Response(serializer.data)

现在在我的应用中,假设我有两个用户:User AUser B。 现在,如果他们两个同时使用该应用程序并且用户 A 创建了一个新帖子,我希望用户 B 收到通知并立即显示该新帖子,而用户 B 不必自己重新加载页面。

现在我的问题是,我可以仅通过使用 Django 频道来实现这一点,还是必须使用 Redis(或任何类似的服务)。如果是,那么如何?

谢谢!

【问题讨论】:

    标签: django django-rest-framework django-channels django-redis


    【解决方案1】:

    第一件事:这是一个复杂的话题。所以这里没有复制粘贴解决方案??‍♂️ 你有很多选择,我已经恢复了几个我喜欢的:

    1. Django Channels
    2. 带有 Websockets 的独立微服务 (my choice!)
    3. FCM data messages(Firebase 云消息传递)

    Websockets 在客户端和服务器之间的双向通信方面非常简单且非常有用。如果您的应用程序的功能列表增加,您可能需要在应用程序中添加其他事件。 WS 将帮助您扩展。

    Redis 是键值存储,用于缓存或存储目的,作为队列的后端等。是的,Django Channels 在后端使用 Redis,但这可能会混淆 Redis 是为 WebSockets 制作的 =)这不是?

    看看 WebSockets,它们会在你的开发者职业生涯中多次帮助你。

    【讨论】: