Home > Net >  Django error trying to run server after installing cors-headers
Django error trying to run server after installing cors-headers

Time:01-09

So I'm trying to make a Django back-end for my project. It's my first time doing something like this, so when I got a CORS error (CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.) I Googled what to do. After doing the steps following the documentation, I've got the following error when trying to run 'python manage.py runserver'.

    C:\Users\Bence\Documents\Programozás-tanulás\web50\final project\benefactum>python manage.py runserver
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "C:\Python310\lib\threading.py", line 1009, in _bootstrap_inner
    self.run()
  File "C:\Python310\lib\threading.py", line 946, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\Bence\AppData\Roaming\Python\Python310\site-packages\django\utils\autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\Bence\AppData\Roaming\Python\Python310\site-packages\django\core\management\commands\runserver.py", line 115, in inner_run
    autoreload.raise_last_exception()
  File "C:\Users\Bence\AppData\Roaming\Python\Python310\site-packages\django\utils\autoreload.py", line 87, in raise_last_exception
    raise _exception[1]
  File "C:\Users\Bence\AppData\Roaming\Python\Python310\site-packages\django\core\management\__init__.py", line 381, in execute
    autoreload.check_errors(django.setup)()
  File "C:\Users\Bence\AppData\Roaming\Python\Python310\site-packages\django\utils\autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\Bence\AppData\Roaming\Python\Python310\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\Bence\AppData\Roaming\Python\Python310\site-packages\django\apps\registry.py", line 114, in populate
    app_config.import_models()
  File "C:\Users\Bence\AppData\Roaming\Python\Python310\site-packages\django\apps\config.py", line 300, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Python310\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\Python310\lib\site-packages\corsheaders\models.py", line 4, in <module>
    from .signals import check_request_enabled  # noqa
  File "C:\Python310\lib\site-packages\corsheaders\signals.py", line 5, in <module>
    check_request_enabled = django.dispatch.Signal(
TypeError: Signal.__init__() got an unexpected keyword argument 'providing_args'

I've done the following steps, following the documentation:

  1. Installing it from pip (pip install django-cors-headers)
  2. I've added 'corsheaders' to the INSTALLED_APPS (in settings.py)
  3. Adding "corsheaders.middleware.CorsMiddleware", "django.middleware.common.CommonMiddleware" to MIDDLEWARE (in settings.py, putting them as high as possible as per document recommendation)
  4. Added CORS_ALLOW_ALL_ORIGINS = True

Is the problem even related to me adding cors-headers? I'm only assuming, because it was working before I did. Any help would be greatly appreciated!

CodePudding user response:

Answer:

Go to your Python installation folder -> Lib -> site-packages -> corsheaders -> signal.py file. (for me it was C:\Python310\Lib\site-packages\corsheaders\signal.py)

I solved the issue by changing the file to the following:

from django.dispatch import Signal

# Return Truthy values to enable a specific request.
# This allows users to build custom logic into the request handling
check_request_enabled = Signal()

More details and smarter explanation: https://github.com/django-notifications/django-notifications/issues/322

CodePudding user response:

The providing_args kwarg was removed in Django 4.0.

It's impossible for this to happen if you have properly installed django-cors-headers 3.10.1, since this was fixed in 3.3. In addition, the line in your traceback does not exist in version 3.10.1 of the library.

  1. Make sure you don't have multiple different versions of the library installed, e.g. one within a virtualenv and one outside it (you clearly seem to have one outside a virtualenv).
    • In fact, you seem to have two Python 3.10 installations altogether, one in AppData\Roaming\Python\Python310 and one in C:\Python310. You will want to clean that up first.
  2. If you aren't using virtualenvs, please start using them to separate the dependencies of your different projects from one another.
  •  Tags:  
  • Related