django_自定义中间件报错_ModuleNotFoundError: No module namdjango.core.exceptions.ImproperlyConfigured: WSGI

本文详细解析了在Django项目中配置自定义中间件时遇到的ModuleNotFoundError错误,并提供了解决方案,强调了正确指定中间件完整路径的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

在使用django中间件拦截请求做处理的时候,自定义并配置好settings.py时候,报错了。

如下

ModuleNotFoundError: No module named 'middleware'
System check identified no issues (0 silenced).
January 01, 2020 - 17:55:46
Django version 2.2.6, using settings 'project3.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "G:\anaconda\lib\site-packages\django\core\servers\basehttp.py", line 45, in get_internal_wsgi_application
    return import_string(app_path)
  File "G:\anaconda\lib\site-packages\django\utils\module_loading.py", line 17, in import_string
    module = import_module(module_path)
  File "G:\anaconda\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "F:\django_lear\project3\project3\wsgi.py", line 16, in <module>
    application = get_wsgi_application()
  File "G:\anaconda\lib\site-packages\django\core\wsgi.py", line 13, in get_wsgi_application
    return WSGIHandler()
  File "G:\anaconda\lib\site-packages\django\core\handlers\wsgi.py", line 135, in __init__
    self.load_middleware()
  File "G:\anaconda\lib\site-packages\django\core\handlers\base.py", line 35, in load_middleware
    middleware = import_string(middleware_path)
  File "G:\anaconda\lib\site-packages\django\utils\module_loading.py", line 17, in import_string
    module = import_module(module_path)
  File "G:\anaconda\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'middleware'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "G:\anaconda\lib\threading.py", line 916, in _bootstrap_inner
    self.run()
  File "G:\anaconda\lib\threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "G:\anaconda\lib\site-packages\django\utils\autoreload.py", line 54, in wrapper
    fn(*args, **kwargs)
  File "G:\anaconda\lib\site-packages\django\core\management\commands\runserver.py", line 137, in inner_run
    handler = self.get_handler(*args, **options)
  File "G:\anaconda\lib\site-packages\django\contrib\staticfiles\management\commands\runserver.py", line 27, in get_handler
    handler = super().get_handler(*args, **options)
  File "G:\anaconda\lib\site-packages\django\core\management\commands\runserver.py", line 64, in get_handler
    return get_internal_wsgi_application()
  File "G:\anaconda\lib\site-packages\django\core\servers\basehttp.py", line 50, in get_internal_wsgi_application
    ) from err
django.core.exceptions.ImproperlyConfigured: WSGI application 'project3.wsgi.application' could not be loaded; Error importing module.

自定义中间件代码如下:

from django.utils.deprecation import MiddlewareMixin

class MyMiddleware(MiddlewareMixin):

    def process_request(self,request):
        print("get 参数为:",request.GET.get("a") )

settings.py中MIDDLEWAE代码如下:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'middleware.myApp.myMiddleware.MyMiddleware',
]

原因分析:

没有找到'middleware'模块。自定义的中间件没有找到,疑惑

解决方案:

settings.py中配置自定义中间件时写上完整路径,从appname开始写

项目名.app名.模块名.中间件类名

修改后代码如下:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'myApp.middleware.myApp.myMiddleware.MyMiddleware',
]

重启服务器,执行。没问题了。

 

感谢参考:

https://blog.csdn.net/weixin_42290927/article/details/82663299

Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. Exception in thread django-main-thread: Traceback (most recent call last): File "C:\Users\29493\Desktop\9 田凌峰\.venv\Lib\site-packages\django\core\servers\basehttp.py", line 48, in get_internal_wsgi_application return import_string(app_path) File "C:\Users\29493\Desktop\9 田凌峰\.venv\Lib\site-packages\django\utils\module_loading.py", line 30, in import_string return cached_import(module_path, class_name) File "C:\Users\29493\Desktop\9 田凌峰\.venv\Lib\site-packages\django\utils\module_loading.py", line 15, in cached_import module = import_module(module_path) File "C:\Users\29493\AppData\Local\Programs\Python\Python313\Lib\importlib\__init__.py", line 88, in import_module return _bootstrap._gcd_import(name[level:], package, level) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 935, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 1022, in exec_module File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "C:\Users\29493\Desktop\9 田凌峰\blog\blog\wsgi.py", line 21, in <module> application = get_wsgi_application() File "C:\Users\29493\Desktop\9 田凌峰\.venv\Lib\site-packages\django\core\wsgi.py", line 13, in get_wsgi_application return WSGIHandler() File "C:\Users\29493\Desktop\9 田凌峰\.venv\Lib\site-packages\django\core\handlers\wsgi.py", line 118, in __init__ self.load_middleware() ~~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\29493\Desktop\9 田凌峰\.venv\Lib\site-packages\django\core\handlers\base.py", line 40, in load_middleware middleware = import_string(middleware_path) File "C:\Users\29493\Desktop\9 田凌峰\.venv\Lib\site-packages\django\utils\module_loading.py", line 30, in import_string return cached_import(module_path, class_name) File "C:\Users\29493\Desktop\9 田凌峰\.venv\Lib\site-packages\django\utils\module_loading.py", line 15, in cached_import module = import_module(module_path) File "C:\Users\29493\AppData\Local\Programs\Python\Python313\Lib\importlib\__init__.py", line 88, in import_module return _bootstrap._gcd_import(name[level:], package, level) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1319, in _find_and_load_unlocked ModuleNotFoundError: No module named 'django.middleware.locale.LocaleMiddlewaredjango'; 'django.middleware.locale' is not a package The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\29493\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 1041, in _bootstrap_inner self.run() ~~~~~~~~^^ File "C:\Users\29493\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 992, in run self._target(*self._args, **self._kwargs) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\29493\Desktop\9 田凌峰\.venv\Lib\site-packages\django\utils\autoreload.py", line 64, in wrapper fn(*args, **kwargs) ~~^^^^^^^^^^^^^^^^^ File "C:\Users\29493\Desktop\9 田凌峰\.venv\Lib\site-packages\django\core\management\commands\runserver.py", line 143, in inner_run handler = self.get_handler(*args, **options) File "C:\Users\29493\Desktop\9 田凌峰\.venv\Lib\site-packages\django\contrib\staticfiles\management\commands\runserver.py", line 31, in get_handler handler = super().get_handler(*args, **options) File "C:\Users\29493\Desktop\9 田凌峰\.venv\Lib\site-packages\django\core\management\commands\runserver.py", line 73, in get_handler return get_internal_wsgi_application() File "C:\Users\29493\Desktop\9 田凌峰\.venv\Lib\site-packages\django\core\servers\basehttp.py", line 50, in get_internal_wsgi_application raise ImproperlyConfigured( ...<2 lines>... ) from err django.core.exceptions.ImproperlyConfigured: WSGI application 'blog.wsgi.application' could not be loaded; Error importing module.
06-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值