def logged_in_or_basicauth(realm=''):
    "\n    A simple decorator that requires a user to be logged in. If they are not\n    logged in the request is examined for a 'authorization' header.\n\n    If the header is present it is tested for basic authentication and\n    the user is logged in with the provided credentials.\n\n    If the header is not present a http 401 is sent back to the\n    requestor to provide credentials.\n\n    The purpose of this is that in several django projects I have needed\n    several specific views that need to support basic authentication, yet the\n    web site as a whole used django's provided authentication.\n\n    The uses for this are for urls that are access programmatically such as\n    by rss feed readers, yet the view requires a user to be logged in. Many rss\n    readers support supplying the authentication credentials via http basic\n    auth (and they do NOT support a redirect to a form where they post a\n    username/password.)\n\n    Usage is simple:\n\n    @logged_in_or_basicauth()\n    def your_view:\n        ...\n\n    You can provide the name of the realm to ask for authentication within.\n    "

    def view_decorator(func):

        def wrapper(request, *args, **kwargs):
            return view_or_basicauth(func, request, (lambda u: u.is_authenticated()), realm, *args, **kwargs)
        return wrapper
    return view_decorator
A simple decorator that requires a user to be logged in. If they are not
logged in the request is examined for a 'authorization' header.

If the header is present it is tested for basic authentication and
the user is logged in with the provided credentials.

If the header is not present a http 401 is sent back to the
requestor to provide credentials.

The purpose of this is that in several django projects I have needed
several specific views that need to support basic authentication, yet the
web site as a whole used django's provided authentication.

The uses for this are for urls that are access programmatically such as
by rss feed readers, yet the view requires a user to be logged in. Many rss
readers support supplying the authentication credentials via http basic
auth (and they do NOT support a redirect to a form where they post a
username/password.)

Usage is simple:

@logged_in_or_basicauth()
def your_view:
    ...

You can provide the name of the realm to ask for authentication within.
def logged_in_or_basicauth(realm=):
    "\n    A simple decorator that requires a user to be logged in. If they are not\n    logged in the request is examined for a 'authorization' header.\n\n    If the header is present it is tested for basic authentication and\n    the user is logged in with the provided credentials.\n\n    If the header is not present a http 401 is sent back to the\n    requestor to provide credentials.\n\n    The purpose of this is that in several django projects I have needed\n    several specific views that need to support basic authentication, yet the\n    web site as a whole used django's provided authentication.\n\n    The uses for this are for urls that are access programmatically such as\n    by rss feed readers, yet the view requires a user to be logged in. Many rss\n    readers support supplying the authentication credentials via http basic\n    auth (and they do NOT support a redirect to a form where they post a\n    username/password.)\n\n    Usage is simple:\n\n    @logged_in_or_basicauth()\n    def your_view:\n        ...\n\n    You can provide the name of the realm to ask for authentication within.\n    "

    def view_decorator(func):

        def wrapper(request, *args, **kwargs):
            return view_or_basicauth(func, request, (lambda u: u.is_authenticated()), realm, *args, **kwargs)
        return wrapper
    return view_decorator