jazzband / django-configurations

A helper for organizing Django project settings by relying on well established programming patterns.
https://django-configurations.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
1.1k stars 143 forks source link

DOTENV - Using environ_name strange behevior #380

Open alon-p opened 10 months ago

alon-p commented 10 months ago

Hi First of all, thanks for making django-configurations. It's great! Thank you

I've noticed a weird bug while using the DOTENV in my configurations I have an .env file with this value

.env

MY_URL=http://some.domain.com

And in my settings.py file I define this

settings.py

class Base(Configuration):
    BASE_DIR = Path(__file__).resolve().parent.parent
    DOTENV = os.path.join(BASE_DIR, '.env')
    ....

class Development(Base):
    MY_URL = values.Value(environ_name="MY_URL")

When I run

python manage.py runserver

Everything work as expected, MY_URL gets its value from the .env file.

But when I run other manage.py commands (I haven't checked with all of them)

python manage.py migrate

MY_URL is None.

For now I can workaround that by setting environ_prefix to an empty string instead of using environ_name.

settings.py

class Development(Base):
    MY_URL = values.Value(environ_prefix="")

I've tried to dig through the source code to see if I can fix this but so far I haven't. If I find something, I'll try opening a PR.

Any Ideas where to look?

eduardo-boutiquenumerique commented 10 months ago

As far as I understand, the variable should be DJANGO_MY_URL in your .env file. When you set environprefix="", you are telling django-configurations to not add the prefix "DJANGO"

I started using the values now and am having some issues with it as well (check #379 )