簡體   English   中英

Django Rest 請求進來時的框架動作

[英]Django Rest Framework action when request comes in

我正在創建一個 Django 項目,該項目使用 Django REST 框架為 ZDB974238714CA8DE634A7CED1 其他項目將向該項目發出 POST、PUT 和 DELETE 請求。 當其中一個請求進來時,我想使用通道向 websocket 組發送一條消息。 出於某種原因,我正在努力做到這一點。

我正在為名為 Thread 的 model 使用擴展 ModelViewSet 的 ThreadViewSet。

class ThreadViewSet(ModelViewSet):
    queryset = Thread.objects.all()
    serializer_class = ThreadSerializer

我嘗試將頻道調用添加到此 class 但它似乎沒有運行:

class ThreadViewSet(ModelViewSet):
    queryset = Thread.objects.all()
    serializer_class = ThreadSerializer
    channel_layer = get_channel_layer()
    async_to_sync(channel_layer.group_send)("group", {'type': 'new_message', 'message': "New Thread"})

我嘗試的下一件事是覆蓋 create()、update() 和 destroy(),這很有效,但對於一個簡單的任務來說似乎需要做很多工作。 我錯過了什么嗎? 必須有一種更簡單的方法來做到這一點。

如果每次請求進入時都應該發送消息,則可以覆蓋 dispatch 方法:

class ThreadViewSet(ModelViewSet):
    queryset = Thread.objects.all()
    serializer_class = ThreadSerializer
    channel_layer = get_channel_layer()

    def dispatch(self, *args, **kwargs):
        async_to_sync(channel_layer.group_send)("group", {'type': 'new_message', 'message': "New Thread"})
        return super().dispatch(*args, **kwargs)

請記住,無論查詢結果如何,此消息都將始終觸發消息 voer websocket。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM