adamchainz / django-cors-headers

Django app for handling the server headers required for Cross-Origin Resource Sharing (CORS)
MIT License
5.37k stars 536 forks source link

TypeError: Signal.__init__() got an unexpected keyword argument 'providing_args' #973

Open dimaslanjaka opened 2 weeks ago

dimaslanjaka commented 2 weeks ago

Understanding CORS

Python Version

3.11

Django Version

5.0.8

Package Version

git

Description

i dont know why, got this error:

Traceback (most recent call last):
  File "D:\Repositories\dl-traffic-python\bin\..\manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "D:\Repositories\dl-traffic-python\venv\Lib\site-packages\django\core\management\__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "D:\Repositories\dl-traffic-python\venv\Lib\site-packages\django\core\management\__init__.py", line 416, in execute    
    django.setup()
  File "D:\Repositories\dl-traffic-python\venv\Lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "D:\Repositories\dl-traffic-python\venv\Lib\site-packages\django\apps\registry.py", line 116, in populate
    app_config.import_models()
  File "D:\Repositories\dl-traffic-python\venv\Lib\site-packages\django\apps\config.py", line 269, in import_models
    self.models_module = import_module(models_module_name)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\bin\python\main\Lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "D:\Repositories\dl-traffic-python\venv\Lib\site-packages\corsheaders\models.py", line 4, in <module>
    from .signals import check_request_enabled  # noqa
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Repositories\dl-traffic-python\venv\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'

here my requirements.txt

django-cors-headers @ https://github.com/adamchainz/django-cors-headers/archive/main.zip
django-cors-middleware
django-environ
django-extensions
django-filter
django==5.0.*
djangorestframework
djangorestframework_simplejwt

settings.py

INSTALLED_APPS = [
    "huey.contrib.djhuey",
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "corsheaders",
    "django_extensions",
    "rest_framework",
    "django_backend.apps.authentication",
    "django_backend.apps.core",
    "django_backend.apps.proxy",
]

MIDDLEWARE = [
    "corsheaders.middleware.CorsMiddleware",
    "django_backend.middleware.CustomCsrfExemptMiddleware",
    "django_backend.middleware.CsrfExemptCsrfViewMiddleware",
    "django_backend.middleware.FaviconMiddleware",
    "django.middleware.security.SecurityMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",  # Default session middleware
    "django_backend.sessions.init.SessionMiddleware",  # Custom session middleware
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
    "django_backend.middleware.SitemapMiddleware",  # write sitemap.txt
]

i've tried

but still got this error, here the screenshoot

image

when i removing corsheaders from settings.py everything is fine, except the cors header for non-origin/external calls.

rgrueebler commented 1 week ago

Hi I have the same problem. The issue seems to be in the signal.py file:

import django.dispatch

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

When I change it to this:

import django.dispatch

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

it works for me.