简体   繁体   English

Django ImportError:没有名为中间件的模块

[英]Django ImportError: No module named middleware

I am using Django version 1.8 and python 2.7.我正在使用 Django 版本 1.8 和 python 2.7。 I am getting the following error after running my project.运行我的项目后出现以下错误。

Traceback (most recent call last):
  File "C:\Python27\lib\wsgiref\handlers.py", line 85, in run
    self.result = application(self.environ, self.start_response)
  File "C:\Python27\lib\site-packages\django\contrib\staticfiles\handlers.py", line 63, in __call__
    return self.application(environ, start_response)
  File "C:\Python27\lib\site-packages\django\core\handlers\wsgi.py", line 170, in __call__
    self.load_middleware()
  File "C:\Python27\lib\site-packages\django\core\handlers\base.py", line 50, in load_middleware
    mw_class = import_string(middleware_path)
  File "C:\Python27\lib\site-packages\django\utils\module_loading.py", line 26, in import_string
    module = import_module(module_path)
  File "C:\Python27\lib\importlib\__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named middleware
[26/Aug/2015 20:34:29] "GET /favicon.ico HTTP/1.1" 500 59

This is my settings.py file这是我的 settings.py 文件

"""
Django settings for collageapp project.

Generated by 'django-admin startproject' using Django 1.8.

For more information on this file, see
https://docs.djangoproject.com/en/1.8/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.8/ref/settings/
"""

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os

APP_PATH = os.path.dirname(os.path.abspath(__file__))
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '******************************************************'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'manageApp',
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.facebook',
    'allauth.socialaccount.providers.google',
    'django.contrib.admindocs',
    'rest_framework',
)

SITE_ID = 1

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'oauth2_provider.middleware.OAuth2TokenMiddleware',
)


ROOT_URLCONF = 'collageapp.urls'
CORS_ORIGIN_ALLOW_ALL = True

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'allauth.account.context_processors.account',
                'allauth.socialaccount.context_processors.socialaccount'
            ],
        },
    },
]

WSGI_APPLICATION = 'collageapp.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases

DATABASES = {
     'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'college_app',
        'USER': 'root',
        'PASSWORD': '',
        'HOST': 'localhost',   # Or an IP Address that your DB is hosted on
        'PORT': '3306',
    }
}



# Internationalization
# https://docs.djangoproject.com/en/1.8/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/

STATIC_URL = '/static/'

I have tried surfing the error but in vain.我试过浏览错误但徒劳无功。 My same code is working fine in other machine.我的相同代码在其他机器上运行良好。

Open up a python shell by running python manage.py shell in your project directory.通过在项目目录中运行python manage.py shell打开 python shell。

Run the following commands one at a time in the python shell:在 python shell 中一次运行以下命令:

>>> from corsheaders.middleware import CorsMiddleware
>>> from oauth2_provider.middleware import OAuth2TokenMiddleware
>>> from django.contrib.auth.middleware import SessionAuthenticationMiddleware

One of the lines should give you an error like the following:其中一行应该给你一个如下所示的错误:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
ImportError: No module named middleware

The line that gives you that error is the missing module that is giving you the problem.给您该错误的行是给您带来问题的缺失模块。

To find the path where the modules are searched, do要找到搜索模块的路径,请执行

>>> import sys; sys.path

Alternatively, if you don't know how to use the python shell, you could just remove the following lines in your settings.MIDDLEWARE_CLASSES one at a time until you don't get that error anymore:或者,如果您不知道如何使用 python shell,您可以一次删除settings.MIDDLEWARE_CLASSES中的以下行,直到您不再收到该错误为止:

'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'corsheaders.middleware.CorsMiddleware',
'oauth2_provider.middleware.OAuth2TokenMiddleware',

Just reinstall the package that gave you the error.只需重新安装给您错误的软件包即可。

django.contrib.auth.middleware -> django django.contrib.auth.middleware -> django

corsheaders.middleware -> corsheaders corsheaders.middleware -> corsheaders

oauth2_provider.middleware -> oauth2_provider oauth2_provider.middleware -> oauth2_provider

Make sure that you have all of the supporting packages installed where they can be found.确保在可以找到的位置安装了所有支持包。 I've run into problems where there are multiple Python interpreters installed, and was inadvertently running Django with one interpreter while installing packages with another.我遇到了安装多个 Python 解释器的问题,并且在使用另一个解释器安装包时无意中用一个解释器运行 Django。 The other thing I would verify is that you have the same versions of the packages on both machines.我要验证的另一件事是两台机器上的软件包版本相同。 Pay close attention to corsheaders.middleware.CorsMiddleware and oauth2_provider.middleware.OAuth2TokenMiddleware since they are not part of Django.请密切注意corsheaders.middleware.CorsMiddlewareoauth2_provider.middleware.OAuth2TokenMiddleware ,因为它们不是 Django 的一部分。

For my situation i did the following:对于我的情况,我做了以下事情:

  1. Inspect the settings.py file检查 settings.py 文件
  2. Check on the middleware section for any part that could have been deleted,accidentally and rectify.检查中间件部分是否有任何部分可能被意外删除并纠正。

For my case the following had been deleted:对于我的情况,以下内容已被删除:

django.middleware.security.SecurityMiddleware

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM