Opened 15 months ago
Closed 15 months ago
#34829 closed Bug (worksforme)
Django reports the “mutually exclusive” error for settings that do not contain STATICFILES_STORAGE. — at Version 1
Reported by: | Malik A. Rumi | Owned by: | nobody |
---|---|---|---|
Component: | File uploads/storage | Version: | 4.2 |
Severity: | Normal | Keywords: | mutually exclusive |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
There is no STATICFILES_STORAGE constant in my settings module. I took a look at the bytecode in pycache. There was no reference to STATICFILES_STORAGE there, either, but I did see a reference to STATICFILES_DIRS. I deleted all pycache files and their folders, but the same identical error persisted.
I looked at the source code that was generating the error:
python3.11/site-packages/django/conf/init.py
specifically, line 278, which happens to be inside the definition of a class Settings.
if self.is_overridden("STATICFILES_STORAGE"): if self.is_overridden("STORAGES"): raise ImproperlyConfigured( "STATICFILES_STORAGE/STORAGES are mutually exclusive." )
The assumption seems to be that if both are overridden the dev is using both of them, and hence the error. Because I use white noise, it makes sense that STORAGES has been overridden. But since I have no reference to STATICFILES_STORAGE anywhere, it follows that the default value of global_settings is being inherited in my local settings, thus generating the error.
django/django/conf/global_settings.py, line 630: STATICFILES_STORAGE = "django.contrib.staticfiles.storage.StaticFilesStorage"
The problem here is that on line 274 of the same file, we have:
STORAGES = { "default": { "BACKEND": "django.core.files.storage.FileSystemStorage", }, "staticfiles": { "BACKEND": "django.contrib.staticfiles.storage.StaticFilesStorage", }, }
Are these constants mutually exclusive for everything but global_settings? I commented the entire block:
# if self.is_overridden("STATICFILES_STORAGE"): # if self.is_overridden("STORAGES"): # raise ImproperlyConfigured( # "STATICFILES_STORAGE/STORAGES are mutually exclusive." # ) # warnings.warn(STATICFILES_STORAGE_DEPRECATED_MSG, RemovedInDjango51Warning)
And that worked:
(chronicle-jltMOQ-O-py3.11) malikarumi@Tetuoan2:~/Projects/lifeandtimes/chronicle$ python manage.py runserver Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced).
Change History (1)
comment:1 by , 15 months ago
Description: | modified (diff) |
---|---|
Resolution: | → worksforme |
Status: | new → closed |
Thanks for the report, however it works for me. Perhaps 3rd-party packages defines both settings. Check TicketClosingReasons/UseSupportChannels for ways to get help, folks on support channels can help you debug your issue.
Exactly.