I really don't see any benefit or sense in the Flask way of exposing request state through imported globals. It makes testing of views unnecessarily complex: you have to either patch the import or set up the thread local context in every test. And like you mentioned, it encourages unnecessary coupling.
It would be so much simpler to just have a request argument passed to each view.
It would be so much simpler to just have a request argument passed to each view.