That's fine. You can handle all the edge cases in your wrapper. The wrapper that used the Django page cache decorator would look something like this:

```
def mc_page_cache(key_prefix='cachemebro'):
    def _mc_page_cache(fun):
        cached_fun = cache_page(key_prefix=key_prefix)(fun)
        def _mc_page_cache_fun(request, *args, **kwargs):
            if request.user.is_authenticated():
                return fun(*args, **kwargs)
            return cached_page(*args, **kwargs)
        return _mc_page_cache_fun
    return _mc_page_cache
```

Or something along those lines.

You could skip the Django page cache decorator and write your own, too. Either way, I'd do it in a decorator since it makes the view easier to think about and it makes it reusable.