web-dev-qa-db-ja.com

Django-不適切に設定:モジュール "Django.contrib.auth.middleware"

私はvirtualenvを実行してDjangoを学習しようとしましたが、何らかの理由でDjangoをインストールした後、デフォルトのDjango開始ページにアクセスしようとすると、ブラウザで次のエラーを取得します。

サーバーエラーが発生しました。管理者に連絡してください。

サーバーを実行しているターミナルウィンドウで、次のエラーが表示されます。

ImproperlyConfigured:モジュール「Django.contrib.auth.middleware」は「SessionAuthenticationMiddleware」属性/クラスを定義しません

Virtualenvでこのエラーが発生する理由について誰かが洞察を持っているなら、感謝しています。ただし、virtualenv以外のセットアップでサーバーを正しく実行できます。

完全なスタックトレースを次に示します。

Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 85, in run
    self.result = application(self.environ, self.start_response)
  File "/Users/jruecke/Python/JSON/lib/python2.7/site-packages/Django-1.6.5-py2.7.Egg/Django/core/handlers/wsgi.py", line 187, in __call__
    self.load_middleware()
  File "/Users/jruecke/Python/JSON/lib/python2.7/site-packages/Django-1.6.5-py2.7.Egg/Django/core/handlers/base.py", line 45, in load_middleware
    mw_class = import_by_path(middleware_path)
  File "/Users/jruecke/Python/JSON/lib/python2.7/site-packages/Django-1.6.5-py2.7.Egg/Django/utils/module_loading.py", line 31, in import_by_path
    error_prefix, module_path, class_name))
ImproperlyConfigured: Module "Django.contrib.auth.middleware" does not define a "SessionAuthenticationMiddleware" attribute/class
[16/Sep/2014 22:44:30] "GET / HTTP/1.1" 500 59
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 85, in run
    self.result = application(self.environ, self.start_response)
  File "/Users/jruecke/Python/JSON/lib/python2.7/site-packages/Django-1.6.5-py2.7.Egg/Django/core/handlers/wsgi.py", line 187, in __call__
    self.load_middleware()
  File "/Users/jruecke/Python/JSON/lib/python2.7/site-packages/Django-1.6.5-py2.7.Egg/Django/core/handlers/base.py", line 45, in load_middleware
    mw_class = import_by_path(middleware_path)
  File "/Users/jruecke/Python/JSON/lib/python2.7/site-packages/Django-1.6.5-py2.7.Egg/Django/utils/module_loading.py", line 31, in import_by_path
    error_prefix, module_path, class_name))
ImproperlyConfigured: Module "Django.contrib.auth.middleware" does not define a "SessionAuthenticationMiddleware" attribute/class
28
Jason Rueckert

簡単な解決策

削除するだけ

'Django.contrib.auth.middleware.SessionAuthenticationMiddleware',

から

MIDDLEWARE_CLASSES = (
...
...
)

プロジェクトのsettings.py

その後、動作するはずです!

23
Shubham Badal

同じエラーが発生していました。しかし、サーバーを実行する前にVirtualEnvに入るのを忘れていました。そのため、端末から最初にvirtualenvをアクティブにしてください:source env/bin/activate次に実行:python manage.py runserver

18
Michael Romrell

Django 1.8 release notes でわかるように

Django.contrib.auth.middleware.SessionAuthenticationMiddlewareはDjango 1.7で追加されました。

また、仮想環境でDjango-1.6.5を使用しているため、does not defineエラーが発生します。

「通常の」環境にDjangoの新しいバージョンがインストールされており、サーバーが正しく実行されている可能性があります。仮想環境内のこのアップグレードDjangoバージョンを修正するには(Djangoを更新する前に、必ず仮想環境をアクティブにしてください!)

これまでのすべてが [〜#〜] zzy [〜#〜] および ser1776955 からの繰り返しであったため、回答に2セントを追加します。

pip install -U Djangoを実行すると、おそらくバージョンが1.10よりも高いバージョンにバンプされ、以下が適用されます。

Django 1.10では、SessionAuthenticationMiddlewareが有効かどうかに関係なく、セッション検証が有効になります(この時点でSessionAuthenticationMiddlewareには意味がありません)。

したがって、それを削除しても安全です。2.0より前に更新する場合は、 Django 2.0リリースノート で次のように述べているため、削除する必要があります。

SessionAuthenticationMiddlewareクラスは削除されました。セッション認証はDjango 1.10。で無条件に有効化されているため、機能を提供しませんでした

また、このバージョンに更新するときは、少し無関係ですが関連しています

Settings.MIDDLEWARE_CLASSESを使用した古いスタイルのミドルウェアのサポートは削除されました

私の経験では、MIDDLEWARE_CLASSESMIDDLEWAREに変更し、リストから'Django.contrib.auth.middleware.SessionAuthenticationMiddleware'を削除するだけで十分です。

5
Marko Prcać

doc を参照し、アクティブなvirtualenvのDjangoは、Django 1.7でなければなりません。

このミドルウェアは、MIDDLEWARE_CLASSESのDjango.contrib.auth.middleware.AuthenticationMiddlewareの後に表示する必要があります

問題は解決しましたか?

5
ZZY

走る

python3 manage.py runserver

の代わりに

python manage.py runserver

または

./manage.py runserver

Manage.pyの置換の最初の行を編集することもできます

\#!/usr/bin/env python

沿って

\#!/usr/bin/env python3

その後、。/ manage.py runserverを実行します

(うまくいくようです、それがDjangoのプロジェクトによって承認されているかどうかわかりません)

4
Niilos

Django 1.7でDjangoプロジェクトを作成し、Django 1.6.8で実行しようとしました。そして、私は同じエラーを受け取りました。私はちょうど削除しました

「Django.contrib.auth.middleware.SessionAuthenticationMiddleware」、

から

MIDDLEWARE_CLASSES =

私のプロジェクトのsettings.pyで。そしてそれは動作します。

2
K.Karamazen

バージョン1.7より前のバージョンDjango(具体的には1.6.4)を使用しているようで、SessionAuthenticationMiddlewareはDjango 1.7。したがって、エラー

ドキュメントはここにあります https://docs.djangoproject.com/en/1.7/ref/middleware/#Django.contrib.auth.middleware.SessionAuthenticationMiddleware

右下で、Djangoのバージョンを選択できます。適切なバージョンを選択し、使用しているDjangoのバージョンに固有のチュートリアルに従ってください。

2
user1776955

今日、これに似た問題に遭遇しました(OS X Mavericksを使用)。

まず、ベースOSにDjangoをインストールしていますか?Virtualenvを使用する前に、OSで直接Djangoを実行していました。通常、Django-admin.pyではなくDjango-adminと入力します。これは、バージョン1.7.1であるvirtualenvの外部でDjangoを呼び出していました。

私のvirtualenvの外でpip uninstall Djangoを実行し、その後Virtualenvに戻りました。最後に.pyなしでDjango-admin --versionを実行すると、返された "zsh:コマンドが見つかりません:Django-admin"(以前は1.7が返されていました) .1)ただし、Django-admin.py --versionを実行すると1.6.5が返されました。

OSからDjangoの外部バージョンを直接誤って持ち込んでいないことを確認してください。Django-admin.pyと入力する必要がある場合があります。

2

そのため、virtualenvの新規インストールを実行してサーバーを起動したところ、期待どおりに動作するようになりました。問題が解決しました。

1
Jason Rueckert

代わりにPython 3で実行してください:

python3 manage.py runserver

それが機能する場合は、次の方法でアプリの移行を適用することも検討してください:python3 manage.py migrate

0
kenorb

Windows7/64バージョンを実行していますが、同じエラーが発生しました。 Djangoのバージョンの問題を指摘したuser1776955に同意しました。そのため、最も簡単な方法は、シェルでDjango-admin.pyを指すことです。私の場合、python env\scripts\Django-admin.py startproject my_Django15_project

0
chao dai
  1. 私は同じエラーがあります:

    File "C:\Users\DANI3\Envs\recetario\lib\site-packages\Django\utils\module_loading.py", line 23, in import_string
      return getattr(module, class_name)
    Django.core.exceptions.ImproperlyConfigured: WSGI application 'recetario.wsgi.application' could not be loaded; Error importing module: 'Module "social_Django.middleware" does not define a "SocialAythExceptionMiddleware" attribute/class'
    
  2. この変更を行うエラーを修正しました:

    'social_Django.middleware.SocialAuthExceptionMiddleware',
    
0
Dantez Layton

プロジェクトのルートから$ source bin/activateを実行していることを確認してください。それ以外の場合は、プロジェクトを一掃して新しいプロジェクトを作成してください。そして、あなたがDjango devになりたいなら、たくさんのvirtualenvを作成する準備をしてください。

たとえば、別々のブランチで作業する場合、2つの異なるvirtualenvなどを使用する方が簡単な場合があり、サーバーに移動すると、おそらくvirtualenvからも実行されることになります。したがって、それらを作成し、ステップを実行するのが得意です。

$ cpコマンドを使用すると、ディレクトリ間でファイルを簡単にコピーできます。

0
John Evans