Каналы django не поддерживают API-интерфейс буфера

Я пытаюсь работать с django и каналами с помощью https://blog.heroku.com/archives/2016/3/17/in_deep_with_django_channels_the_future_of_real_time_apps_in_django однако этот код не кажется совместимым с python 3.4

на моем ws_connect:

@channel_session
def ws_connect(message):
    prefix, label = message['path'].strip('/').split('/')
    room = Room.objects.get(label=label)
    Group('chat-' + label).add(message.reply_channel)
    message.channel_session['room'] = room.label

Я получаю следующую ошибку при попытке подключения к сокету.

префикс, метка = сообщение ['путь'].strip('/').split('/') TypeError: Type str не поддерживает API буфера

Я только начал работать с python 3.4 и понятия не имею, почему это ломается.


person Hans de Jong    schedule 20.03.2016    source источник


Ответы (1)


Похоже, что message['path'] — это байтовый объект, а не строка, и попытка применить strip() к байтовому объекту приводит к довольно загадочному сообщению об ошибке. Вместо этого попробуйте message['path'].decode() преобразовать его в строку, а затем выполните зачистку и разбиение.

См. также Python 3.0 urllib. ошибка синтаксического анализа Тип str не поддерживает API буфера

person clwainwright    schedule 21.03.2016