'Group name not taking spaces django-channels

I am working on a chat app with django channels, everthing is working but messages don't get send when room name has spaces or some other special carachters, ideally I'd like to be possible to the user to be free and name their room whatever they want and include spaces as well.

/* consumers.py: class ChatConsumer(AsyncWebsocketConsumer): async def connect(self): self.room_name = self.scope['url_route']['kwargs']['room_name'] self.room_group_name = 'chat_%s' % self.room_name

            # Join room
            await self.channel_layer.group_add(
                self.room_group_name,
                self.channel_name
            )
    
            await self.accept()
    
        async def disconnect(self, close_code):
            # Leave room
            await self.channel_layer.group_discard(
                self.room_group_name,
                self.channel_name
            )
    
        # Receive message from web socket
        async def receive(self, text_data):
            data = json.loads(text_data)
            message = data['message']
            username = data['username']
            room = data['room']
    
            await self.save_message(username, room, message)
    
            # Send message to room group
            await self.channel_layer.group_send(
                self.room_group_name,
                {
                    'type': 'chat_message',
                    'message': message,
                    'username': username
                }
            )
    
        async def chat_message(self, event):
            message = event['message']
            username = event['username']
    
            # Send message to WebSocket
            await self.send(text_data=json.dumps({
                'message': message,
                'username': username,
                'timestamp': timezone.now().isoformat()
            }))
    
        @sync_to_async
        def save_message(self, username, room, message):
            if len(message) > 0:
                Message.objects.create(username=username, room=room, content=message)
    
    
    routing.py:
    websocket_urlpatterns = [
        path('ws/<str:room_name>/', consumers.ChatConsumer.as_asgi()),
    ]
    
    
    urls.py:
    urlpatterns = [
        path('', views.index, name='index'),
        path('<str:room_name>/', views.room, name='room'),
    ]
    
    
    index.html:
     <script>
     document.querySelector('#room-name-input').focus();
    
         
          document.querySelector("#room-name-input, #username-input").onkeyup = function(e) {
            if (e.keyCode === 13) {
              document.querySelector('#room-name-submit').click();
            }
          };
    
          document.querySelector('#room-name-submit').onclick = function(e) {
            var roomName = document.querySelector('#room-name-input').value;
            var userName = document.querySelector('#username-input').value;
            window.location.replace(roomName + '/?username=' + userName);
          };
        </script>

*/



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source