diff --git a/channels/request.py b/channels/request.py index d7cd4b2..e7fd49f 100644 --- a/channels/request.py +++ b/channels/request.py @@ -8,8 +8,8 @@ def encode_request(request): """ # TODO: More stuff value = { - "GET": request.GET.items(), - "POST": request.POST.items(), + "GET": list(request.GET.items()), + "POST": list(request.POST.items()), "COOKIES": request.COOKIES, "META": {k: v for k, v in request.META.items() if not k.startswith("wsgi")}, "path": request.path, diff --git a/channels/response.py b/channels/response.py index 22d410a..c8abdd7 100644 --- a/channels/response.py +++ b/channels/response.py @@ -1,4 +1,5 @@ from django.http import HttpResponse +from six import PY3 def encode_response(response): @@ -10,8 +11,10 @@ def encode_response(response): "content_type": getattr(response, "content_type", None), "content": response.content, "status_code": response.status_code, - "headers": response._headers.values(), + "headers": list(response._headers.values()), } + if PY3: + value["content"] = value["content"].decode('utf8') response.close() return value diff --git a/channels/utils.py b/channels/utils.py index a44fe9c..4a7fb65 100644 --- a/channels/utils.py +++ b/channels/utils.py @@ -1,6 +1,7 @@ import types from django.apps import apps +from six import PY3 def auto_import_consumers(): """ @@ -12,8 +13,13 @@ def auto_import_consumers(): try: __import__(module_name) except ImportError as e: - if "no module named %s" % submodule not in str(e).lower(): - raise + err = str(e).lower() + if PY3: + if "no module named '%s'" % (module_name,) not in err: + raise + else: + if "no module named %s" % (submodule,) not in err: + raise def name_that_thing(thing): diff --git a/docs/getting-started.rst b/docs/getting-started.rst index 00c8db2..63b433d 100644 --- a/docs/getting-started.rst +++ b/docs/getting-started.rst @@ -175,7 +175,9 @@ to test your new code:: socket.onmessage = function(e) { alert(e.data); } - socket.send("hello world"); + socket.onopen = function() { + socket.send("hello world"); + } You should see an alert come back immediately saying "hello world" - your message has round-tripped through the server and come back to trigger the alert.