[英]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.