Silk saves down the request and response bodies of each HTTP request by default. These bodies are often UTF encoded and hence it is important that Silk’s database tables are also UTF encoded. Django has no facility for enforcing this and instead assumes that the configured database defaults to UTF.

The middleware is placement sensitive. If the middleware before silk.middleware.SilkyMiddleware returns from process_request then SilkyMiddleware will never get the chance to execute. Therefore you must ensure that any middleware placed before never returns anything from process_request. See the django docs for more information on this.

This GitHub issue also has information on dealing with middleware problems.