Django の例外ミドルウェアです。TypeError: object() takes no parameters
2023-11-30 16:30:05
質問
Django 1.10 を使っていて、例外ミドルウェアですべての例外をキャッチしようとしています。
以下のコードは内部サーバエラーを引き起こします。
mw_instance = middleware(handler)
TypeError: object() takes no parameters
views.py
from django.http import HttpResponse
def my_view(request):
x = 1/0 # cause an exception
return HttpResponse("ok")
設定.py
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',
'myproject.middleware.ExceptionMiddleware',
]
ミドルウェア.py
from django.http import HttpResponse
class ExceptionMiddleware(object):
def process_exception(self, request, exception):
return HttpResponse("in exception")
私は、これらの object() は django 1.10 ではパラメータを取りません。 といったミドルウェア対 middleware_classes についての質問を見ましたが、このケースにどう当てはまるのか、また、問題を解決するために実際に何を変更する必要があるのかがわかりません。
どのように解決するのですか?
新しい
MIDDLEWARE
設定を使用しているため、ミドルウェア・クラスは
get_response
引数を指定します。
https://docs.djangoproject.com/en/1.10/topics/http/middleware/#writing-your-own-middleware
こんな風にクラスを書けばいいんですね。
from django.http import HttpResponse
class ExceptionMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
return self.get_response(request)
def process_exception(self, request, exception):
return HttpResponse("in exception")
また
MiddlewareMixin
を使って、ミドルウェアを Django の 1.10 以前のバージョンと 1.10 以降のバージョンとで互換性を持たせることもできます。
https://docs.djangoproject.com/en/1.10/topics/http/middleware/#upgrading-pre-django-1-10-style-middleware
from django.http import HttpResponse
from django.utils.deprecation import MiddlewareMixin
class ExceptionMiddleware(MiddlewareMixin):
def process_exception(self, request, exception):
return HttpResponse("in exception")
関連
-
django のクエリセット操作
-
[解決済み] request.GETでURLパラメータを取得する
-
[解決済み] django の OneToOneField と ForeignKey の違いは何ですか?
-
[解決済み] Django のクエリで OR フィルタを行うにはどうすればよいですか?
-
[解決済み] Django のモデルで電話番号を保存する最良の方法は何ですか?
-
[解決済み] Django ORM のクエリセットに対応する SQL クエリを表示するには?
-
[解決済み] Djangoアプリの命名規則はありますか?
-
[解決済み] Djangoのクッキー、どうすれば設定できますか?
-
[解決済み] Django の {% url %} テンプレートタグでクエリパラメータを渡すことは可能でしょうか?
-
[解決済み] あるdjangoアプリから新しいアプリにモデルを移行するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
オペレーショナルエラーです。1050 解決
-
ImproperlyConfiguredです。DEFAULT_INDEX_TABLESPACE の設定を要求されましたが、設定されていません。
-
ImproperlyConfiguredです。INSTALLED_APPS の設定を要求されたが、設定されていない
-
[解決済み] Django のビューで 2 つ以上のクエリセットを結合するにはどうすればよいですか?
-
[解決済み] QuerySetで空白またはNULLの名前をフィルタリングする方法は?
-
[解決済み] RuntimeWarning: DateTimeFieldがナイーブなdatetimeを受信した
-
[解決済み] django のクラスベースのビューで permission_required デコレータを使用する方法
-
[解決済み] テーブルのフィールドから異なる値を選択する
-
[解決済み] Django モデルで外部キーフィールドをオプションにすることはできますか?
-
[解決済み] Djangoでカスタムミドルウェアをセットアップする方法