Re: Project settings and application settings.
I don't really want the settings to be adjusted at runtime, I would like my application to reset some django "core" settings like the MIDDLEWARE_CLASSES during the project configuration, once for all.
It is just to ease the deployment of the project and because the applications knows which settings it needs.
But if as you said settings are immutable then I'm doing it wrong, a management command would be a better place to do this settings.
Thank you for your answer
Le jeudi 20 juin 2013 17:00:19 UTC+2, Jacky Tian a écrit :
Django settings are meant to be immutable, so your issues might be stemming from the way you're changing settings at runtime. Most Django projects that need to adjust settings at runtime do so by keeping the mutable settings in the database (e.g. a separate app in the project), so that's an approach you could try.--
On Thursday, June 20, 2013 5:32:31 AM UTC-4, pii...@gmail.com wrote:Hello all,
I want to have an application settings modifying the project settings but it doesn't seems to work.
For development purpose I need to authenticate users against my application database. In Production
the authentication is done by Apache, it then sends the REMOTE_USER, correctly.
To realize the authentication in production, i am using one middleware, and one backend as found in
django documentation.
I would like to have only one setting in the project thesite/settings.py, a boolean called EXTERNAL_AUTH,
controling the content of AUTHENTICATION_BACKENDS and MIDDLEWARE_CLASSES.
The code modifying those two variables will stand in my application my/settings.py, It would then look like this
from django.conf import settings
if settings.EXTERNAL_AUTH == False:
# Disabling standard login/logout.
settings.LOGIN_REDIRECT_URL='/'
settings.LOGIN_URL='/my/accounts/login/'
settings.LOGOUT_URL='/my/accounts/logout/'
else:
settings.AUTHENTICATION_BACKENDS = (
('my.backends.LDAPUserBackend', ) +
settings.AUTHENTICATION_BACKENDS)
# Insert LDAPUserMiddleware right after AuthenticationMiddleware
index = settings.MIDDLEWARE_CLASSES.index(
"django.contrib.auth.middleware. AuthenticationMiddleware")
settings.MIDDLEWARE_CLASSES = (settings.MIDDLEWARE_CLASSES[:index+1] +
('my.backends.LDAPUserMiddleware', ) +
settings.MIDDLEWARE_CLASSES[index+1:])
EXTERNAL_AUTH is used at different locations in my application, for example I use it to decide whether or not
I display the "change password" link.
When I start testing, toggling EXTERNAL_AUTH, the behavior is fuzzy. It inconsitently redirect me to the accounts/login
even if I'm authenticated through apache. I guess the middleware isn't called but when I raise an error, the debug page
contradicts this.
I'm a bit lost. Do you have any hint?
Regards,
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
For more options, visit https://groups.google.com/groups/opt_out.

0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home