> didn't return an HttpResponse object. It returned an unawaited coroutine
instead. You may need to add an 'await' into your view.
Even though the function was a literal single line `return
HttpResponse('a')`. On the next day I found out the problem was because I
was using the `csrf_exempt` decorator.
This patch 'fixes' that, allowing this decorator to be used by async
functions as well.
Couldn't find how to make an automated test for that so it's not included,
someone else has to create it or guide me on where and how to do it.
Flake8 didn't complain and there's no need for extra documentation as it
just improves async support in more existing features.
--
Ticket URL: <https://code.djangoproject.com/ticket/32228>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_tests: 0 => 1
Old description:
> After losing an entire day with a cryptic message telling me my view:
>
> > didn't return an HttpResponse object. It returned an unawaited
> coroutine instead. You may need to add an 'await' into your view.
>
> Even though the function was a literal single line `return
> HttpResponse('a')`. On the next day I found out the problem was because I
> was using the `csrf_exempt` decorator.
>
> This patch 'fixes' that, allowing this decorator to be used by async
> functions as well.
>
> Couldn't find how to make an automated test for that so it's not
> included, someone else has to create it or guide me on where and how to
> do it.
>
> Flake8 didn't complain and there's no need for extra documentation as it
> just improves async support in more existing features.
New description:
After losing an entire day with a cryptic message telling me my view:
> didn't return an HttpResponse object. It returned an unawaited coroutine
instead. You may need to add an 'await' into your view.
Even though the function was a literal single line `return
HttpResponse('a')`. On the next day I found out the problem was because I
was using the `csrf_exempt` decorator.
This patch 'fixes' that, allowing this decorator to be used by async
functions as well.
Couldn't find how to make an automated test for that so it's not included,
someone else has to create it or guide me on where and how to do it.
Flake8 didn't complain and there's no need for extra documentation as it
just improves async support in more existing features.
Code at Github
https://github.com/django/django/pull/13720
--
--
Ticket URL: <https://code.djangoproject.com/ticket/32228#comment:1>
* status: new => closed
* resolution: => duplicate
Comment:
Duplicate of #31949.
--
Ticket URL: <https://code.djangoproject.com/ticket/32228#comment:2>