I find the value of separate settings modules is not splitting them by
topic, but overriding them in specific contexts, like staging, production
and development. Your implementation (and, I think, any solution that
compiles multiple settings modules independently) don't have a way to
specify orderings in a non-magical way. That's why I prefer explicitly
importing some common settings into one module and overriding them
piecemeal. The Zen of Python says "Explicit is better than implicit" and I
think that is the case here. Packages provide settings and reasonable
defaults. If you want to modularize them, you are free to do so yourself. I
think composing settings internally is just added complexity for little
benefit.

Best,
Alex Ogier


On Wed, Mar 13, 2013 at 12:27 PM, Omer Katz <[email protected]> wrote:

> Lately I implemented some changes for django's settings module .
> I refactored the whole module in order to have more extension points.
> With #20040 <https://code.djangoproject.com/ticket/20040> it is now
> possible to inject the Settings class that will be used by the LazySettings
> object and I introduced a new class called SettingsCollector that allows
> the developer to costumize how django will collect it's settings.
> This enabled me to write the real code that will allow loading the
> settings either as a package or as a module.
> Instead of having one big monolitic settings.py you can now have a package
> that has configuration modules that are seperated by topic.
> If #20040 is accepted I can work on the new SettingsCollector that will
> either try to load a settings module or package.
> Should the new default be a package or a module? If it's a package it
> means we should also change the project_template.
> This is the working prototype <https://gist.github.com/thedrow/5153782>that I 
> wrote before I thought about creating a new SettingsCollector class.
> To test it just call monkey_patch() in your manage.py.
> We might want to allow multiple modules and packages to be loaded.
> This will help us actually use the settings_local.py in a standard way.
> What do you guys think? Am I clear enoguh? Should I explain in more detail
> what am I thinking here?
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/django-developers?hl=en
> .
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-developers?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to