I strongly disagree with this.

I've not seen a common standard between companies when it comes to settings
in Django and for good reason. Different companies employ different
standards and practices when it comes to configuration and security.
Enforcing an arbitrary standard - such as a settings file for each env - is
too opinionated for me and would often involve extra work on setup to
remove this initial way of doing things.

Likewise in my experience ignoring settings files is actually quite rare.
Most companies store secrets external to the settings file and prefer to
keep their settings in git. Adding a .gitignore with the settings files
would actually cause issues on future projects where you aren't expecting
this.

As mentioned this isn't necessarily to say having multiple settings files
or ignoring settings files are bad in an individual project. But that every
project has its own way of handling configuration and secrets, so enforcing
the standard *you* follow on everyone else - not because it is the best
possible way of doing things, but because it is how you do things - is
unlikely to be a popular move.

Adapting your settings configuration to the way you work is a small amount
of work - Django does a good job at the moment of staying unopinionated on
this whilst giving you what you need to get going.

On the SECRET_KEY. It is true that many people commit their SECRET_KEY into
the repo. But in the same way that you often get people committing DB
credentials and API keys. It is not a frameworks job to inform you of every
security malpractice (although Django does a good job of this already), it
is up to the developer to understand what they are doing. Despite this
there is extensive documentation on the SECRET_KEY needing to be secret,
mentioned both in the settings documentation and the deployment checklist.
There is even a comment above this setting explicitly stating that it
should be kept secret in production.

Assuming Django's startproject command aims to have a fully functioning
project from the get go - which means it needs a SECRET_KEY - then I think
this is a pretty good compromise as is.

- Nick


On Fri, Oct 11, 2019 at 12:14 PM Christian González <
christian.gonza...@nerdocs.at> wrote:

> Hi, may I disagree - I set up projects very often (for testing a package),
> and I always feel a bit awkward because of that monolithic settings.py file.
>
> I can really support Bobby's idea, even if development/staging/production
> may be a bit overkill. Having a practical standard which ensures good
> practice from the start is a good thing. And OTOH, it won't hurt anyone if
> these files are there.
>
> As there was another discussion earlier about "declarative" settings -
> maybe it would be helpful to exclude some of the settings from settings.py
> which is code, not declaration. SECRET_KEY could be anywhere by default, it
> doesn't have to be in an executable .py file. But this would mean to change
> Django's code to read it before or after importing settings.py.
>
> +1 for a .gitignore file too.
>
> Christian
> Am 10.10.19 um 22:18 schrieb Ehigie Aito:
>
> Hello Bobby,
> I think this should be added to a best practises documentation and not
> codified in Django. As I feel that would be overkill.
>
> On Thu, 10 Oct 2019, 20:41 Bobby Mozumder, <bmozum...@gmail.com> wrote:
>
>> In particular, they include settings that shouldn’t be stored in a git
>> repo such as SECRET_KEY and database passwords. You’ll find these kinds of
>> settings in git repos all the time.
>>
>> Really the default django-admin startproject shouldn’t have a single
>> settings.py that people include in their git repos, but instead a python
>> settings module, with a base.py, development.py, staging.py, and
>> production.py. An __init__.py reads base.py and one of
>> development/staging/production based on ENV variables (defaulting to
>> development if no ENV variable).
>>
>> Additionally, startproject should add a .gitignore in the root directory
>> to not include development/staging/production settings files.
>>
>> I get that this might not be absolutely necessary but I think these are
>> the kinds of defaults that make practical real-world use more secure, as
>> well as standardizing workflow for more advanced production usage.
>>
>> Is this something agreeable? I can put together a solution if people like
>> this.
>>
>> -bobby
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Django developers  (Contributions to Django itself)" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to django-developers+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/django-developers/320B70FD-BDC1-445D-B72B-0CD0BA736B88%40gmail.com
>> .
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Django developers (Contributions to Django itself)" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-developers+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-developers/CA%2BB1BD6kxbSR_fOwAWxY%3DtjRA30YPcYVt87%2BHguOKyZBOnHnuQ%40mail.gmail.com
> <https://groups.google.com/d/msgid/django-developers/CA%2BB1BD6kxbSR_fOwAWxY%3DtjRA30YPcYVt87%2BHguOKyZBOnHnuQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> --
> Dr. Christian Gonzálezhttps://nerdocs.at
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django developers (Contributions to Django itself)" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-developers+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-developers/bba18cb5-d1d9-79f6-de15-d5186bab1f32%40nerdocs.at
> <https://groups.google.com/d/msgid/django-developers/bba18cb5-d1d9-79f6-de15-d5186bab1f32%40nerdocs.at?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/CAGuvt93VFf17sStwGLyPf9tSLvuEOYjaKZZ3Y59yEU7BVvVjEQ%40mail.gmail.com.

Reply via email to