#34829: Django reports the “mutually exclusive” error for settings that do not contain STATICFILES_STORAGE. -------------------------------------+------------------------------------- Reporter: Malik A. | Owner: nobody Rumi | Type: Bug | Status: new Component: File | Version: 4.2 uploads/storage | Severity: Normal | Keywords: mutually exclusive Triage Stage: | Has patch: 0 Unreviewed | Needs documentation: 0 | Needs tests: 0 Patch needs improvement: 0 | Easy pickings: 0 UI/UX: 0 | -------------------------------------+------------------------------------- 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). -- Ticket URL: <https://code.djangoproject.com/ticket/34829> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/0107018a84eacfb6-f8861891-4616-4c07-86f7-7f5219ec2e1b-000000%40eu-central-1.amazonses.com.