私は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
簡単な解決策
削除するだけ
'Django.contrib.auth.middleware.SessionAuthenticationMiddleware',
から
MIDDLEWARE_CLASSES = (
...
...
)
プロジェクトのsettings.py
その後、動作するはずです!
同じエラーが発生していました。しかし、サーバーを実行する前にVirtualEnvに入るのを忘れていました。そのため、端末から最初にvirtualenvをアクティブにしてください:source env/bin/activate
次に実行:python manage.py runserver
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_CLASSES
をMIDDLEWARE
に変更し、リストから'Django.contrib.auth.middleware.SessionAuthenticationMiddleware'
を削除するだけで十分です。
doc を参照し、アクティブなvirtualenvのDjangoは、Django 1.7でなければなりません。
このミドルウェアは、MIDDLEWARE_CLASSESのDjango.contrib.auth.middleware.AuthenticationMiddlewareの後に表示する必要があります
問題は解決しましたか?
走る
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のプロジェクトによって承認されているかどうかわかりません)
Django 1.7でDjangoプロジェクトを作成し、Django 1.6.8で実行しようとしました。そして、私は同じエラーを受け取りました。私はちょうど削除しました
「Django.contrib.auth.middleware.SessionAuthenticationMiddleware」、
から
MIDDLEWARE_CLASSES =
私のプロジェクトのsettings.pyで。そしてそれは動作します。
バージョン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のバージョンに固有のチュートリアルに従ってください。
今日、これに似た問題に遭遇しました(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と入力する必要がある場合があります。
そのため、virtualenvの新規インストールを実行してサーバーを起動したところ、期待どおりに動作するようになりました。問題が解決しました。
代わりにPython 3で実行してください:
python3 manage.py runserver
それが機能する場合は、次の方法でアプリの移行を適用することも検討してください:python3 manage.py migrate
。
Windows7/64バージョンを実行していますが、同じエラーが発生しました。 Djangoのバージョンの問題を指摘したuser1776955に同意しました。そのため、最も簡単な方法は、シェルでDjango-admin.pyを指すことです。私の場合、python env\scripts\Django-admin.py startproject my_Django15_project
私は同じエラーがあります:
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'
この変更を行うエラーを修正しました:
'social_Django.middleware.SocialAuthExceptionMiddleware',
プロジェクトのルートから$ source bin/activateを実行していることを確認してください。それ以外の場合は、プロジェクトを一掃して新しいプロジェクトを作成してください。そして、あなたがDjango devになりたいなら、たくさんのvirtualenvを作成する準備をしてください。
たとえば、別々のブランチで作業する場合、2つの異なるvirtualenvなどを使用する方が簡単な場合があり、サーバーに移動すると、おそらくvirtualenvからも実行されることになります。したがって、それらを作成し、ステップを実行するのが得意です。
$ cpコマンドを使用すると、ディレクトリ間でファイルを簡単にコピーできます。