首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django项目中实时聊天的问题

django项目中实时聊天的问题
EN

Stack Overflow用户
提问于 2020-04-05 05:12:38
回答 1查看 41关注 0票数 0

我有django项目与房间,我想创建实时聊天的房间与频道库,这个聊天工作与数据从url类example.com/房间名称/人名,但我有房间有静态的url(示例如下),如何调整我的项目。我想在url中显示request.user.username而不是person_name,并且我想使用room_detail url而不是每次都应该输入的room_name

代码语言:javascript
复制
views.py
class RoomDetail(DetailView):
model = Room
template_name = 'rooms/room_detail.html'
context_object_name = 'room_detail'
slug_field = 'invite_url'
slug_url_kwarg = 'url'


consumers.py
class Consumer(WebsocketConsumer):
def connect(self):
    self.room_name=self.scope['url_route']['kwargs']['room_name']
    self.room_group_name='chat_%s' % self.room_name
    self.person_name=self.scope['url_route']['kwargs']['person_name']
    async_to_sync(self.channel_layer.group_add)(
        self.room_group_name,
        self.channel_name
    )
    async_to_sync(self.channel_layer.group_send)(
        self.room_group_name,
        {
            "type":"chat_message",
            "message":self.person_name+" Joined Chat"
        }
    )
    self.accept()
def disconnect(self, code):
    async_to_sync(self.channel_layer.group_send)(
        self.room_group_name,
        {
            "type":"chat_message",
            "message":self.person_name+" Left Chat"
        }
    )
    async_to_sync(self.channel_layer.group_discard)(
        self.room_group_name,
        self.channel_name
    )
def receive(self, text_data=None, bytes_data=None):
    text_data_json=json.loads(text_data)
    message=text_data_json['message']
    async_to_sync(self.channel_layer.group_send)(
        self.room_group_name,
        {
            'type':'chat_message',
            'message':self.user+" : "+message
        }
    )
def chat_message(self,event):
    message=event['message']
    self.send(text_data=json.dumps({
        'message':message
    }))

urls.py
path('rooms/<url>/', RoomDetail.as_view(), name='room_detail'),
EN

回答 1

Stack Overflow用户

发布于 2020-04-05 07:48:45

我不确定,我知道你会的。但是如果你需要获取用户名,你可以简单地使用

代码语言:javascript
复制
self.scope['user'].username

而不是从urls模式中获取它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61034863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档