Opened 9 years ago
Last modified 9 years ago
#25034 closed Cleanup/optimization
Remove attempts to access settings at import time — at Initial Version
Reported by: | David Evans | Owned by: | nobody |
---|---|---|---|
Component: | Core (System checks) | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | me@…, tom@… | Triage Stage: | Accepted |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description
There are currently two places (that I can find) in Django where settings are read at import time:
Case 1 is causing some people confusion when attempting to import things in wsgi.py
, as the import breaks if it comes before DJANGO_SETTINGS_MODULE
is defined. See for example: https://github.com/evansd/whitenoise/issues/31#issuecomment-104185649
This check also seems a bit superfluous as failing to define a default cache backend will trigger an InvalidCacheBackendError
when attempting to access it. It's not clear that triggering ImproperlyConfigured
on import adds much here.
Case 2 is bit strange as I can't find anywhere that actually uses this urls.py
file. Is it possible that it was just left in place and is now redundant?
If we could remove these two cases then we have the simple rule that settings are not to be accessed at import time, and we won't have any subtle import-order requirements.