The problem isn't the content type definition -- it's what your own
code is doing with the request.
A 401 response indicates that your own render() line isn't being
executed -- you're being bounced for a failed authentication. For some
reason, the client request isn't providing the expected authentication
credentials (either the HTTP_AUTHORIZATION header if you're using HTTP
Basic auth, or the session if you're using a login-based auth, or
possibly something else), and as a result, the client request is being
rejected.
I'm a little confused as to why dropping the content type argument
would alter the outcome, but this must be something to do with your
own code. Django itself doesn't have any 401 (to the extent that there
isn't even a 401 response type defined by default), so the code
raising the 401 isn't anything on Django's side.
Yours,
Russ Magee %-)