4

https://gist.github.com/426829で提供されているミドルウェアを使用して、クロス サイト スクリプティングを実行しています。

ただし、ミドルウェアを に追加するとMIDDLEWARE_CLASSES、次のエラーが発生します。

ImproperlyConfigured: ミドルウェア モジュールではありません。

MIDDLEWARE_CLASSESはこのように見えます:

MIDDLEWARE_CLASSES = ('django.middleware.common.CommonMiddleware',
                      'django.contrib.sessions.middleware.SessionMiddleware',
                      'django.middleware.csrf.CsrfViewMiddleware',
                      'django.contrib.auth.middleware.AuthenticationMiddleware',
                      'django.contrib.messages.middleware.MessageMiddleware',
                      'TempMiddleware',)

要点のコードは変更していません。process_requestそしてprocess_response方法があります。私はUbuntuで最新バージョンのPythonとDjangoを実行しています。

4

2 に答える 2

3

なにTempMiddleware?モジュールの名前ですか、それともクラスの名前ですか? 他のエントリからわかるように、実際のクラスの完全修飾 Python パスが必要です。TempMiddlewareがモジュールの名前である場合は必要ですTempMiddleware.MyMiddlewareClass(実際にはPEP8 の命名規則に従う必要があります)。また、それがクラスの名前である場合はmy_module.TempMiddleware.

于 2012-01-16T09:58:38.200 に答える
2

編集:

TempMiddlewareインポートできません。これはクラスの名前です。インポート パス全体を入力する必要があります。

例えば:

'django.contrib.auth.middleware.AuthenticationMiddleware'

そしてそうではない

'AuthenticationMiddleware'

したがって、クラスが app_name/middleware.py にある場合は、

app_name.middlaware.TempMiddleware

これは、設定ファイルの変数MIDDLEWARE_CLASSESに、リストされたモジュールの 1 つがミドルウェアではないモジュールのリストが含まれていることを意味します。

考えられる原因:

  • ミドルウェア メソッドを宣言しないミドルウェアを追加しました: 最後に追加したミドルウェアを削除して修正します
  • 正しいミドルウェアを追加しましたが、名前の最後にカンマを付けるのを忘れたため、文字列が連結され、django が 2 つのミドルウェアを実際には 1 つと認識します: 不足しているカンマを追加して修正します
于 2012-01-16T09:32:53.767 に答える