diff --git a/django/contrib/auth/handlers/modpython.py b/django/contrib/auth/handlers/modpython.py index b1d7680a33..e6719794a1 100644 --- a/django/contrib/auth/handlers/modpython.py +++ b/django/contrib/auth/handlers/modpython.py @@ -10,8 +10,6 @@ def authenhandler(req, **kwargs): # that so that the following import works os.environ.update(req.subprocess_env) - from django.contrib.auth.models import User - # check for PythonOptions _str_to_bool = lambda s: s.lower() in ('1', 'true', 'on', 'yes') @@ -19,6 +17,11 @@ def authenhandler(req, **kwargs): permission_name = options.get('DjangoPermissionName', None) staff_only = _str_to_bool(options.get('DjangoRequireStaffStatus', "on")) superuser_only = _str_to_bool(options.get('DjangoRequireSuperuserStatus', "off")) + settings_module = options.get('DJANGO_SETTINGS_MODULE', None) + if settings_module: + os.environ['DJANGO_SETTINGS_MODULE'] = settings_module + + from django.contrib.auth.models import User # check that the username is valid kwargs = {'username': req.user, 'is_active': True} diff --git a/docs/apache_auth.txt b/docs/apache_auth.txt index 0dd5d00cbe..72e0841305 100644 --- a/docs/apache_auth.txt +++ b/docs/apache_auth.txt @@ -56,6 +56,15 @@ location to users marked as staff members. You can use a set of required. ================================ ========================================= +Note that sometimes ``SetEnv`` doesn't play well in this mod_python +configuration, for reasons unknown. If you're having problems getting +mod_python to recognize your ``DJANGO_SETTINGS_MODULE``, you can set it using +``PythonOption`` instead of ``SetEnv``. Therefore, these two Apache directives +are equivalent:: + + SetEnv DJANGO_SETTINGS_MODULE mysite.settings + PythonOption DJANGO_SETTINGS_MODULE mysite.settings + .. _authentication system: http://www.djangoproject.com/documentation/authentication/ .. _Subversion: http://subversion.tigris.org/ .. _mod_dav: http://httpd.apache.org/docs/2.0/mod/mod_dav.html