質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Q&A

解決済

1回答

1816閲覧

Djangoの独自Middlewareを、一部のviewメソッドのみに適用する方法

yokoK

総合スコア20

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

0グッド

1クリップ

投稿2015/07/02 07:23

Django1.8.1で開発しています。

その中で、基本的にはユーザチェック用の独自Middlewareを通過させたいのですが
一部のみ、その独自Middlewareを通過しないよう(チェックしないよう)にしたいと思っています。

その際に、Middlewareの__init__に記載すればよいかと思ったのですが、
引数を使えないようで、どうやって判断していいかがわかりません。

希望としては、urls.pyに記載したURLでキャッチして判断したいのですが、
何か方法はご存じないでしょうか。

宜しくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

settingsにチェックを通過するパスのリストを作ってはどうでしょう?
djangoのsettingsにチェックせず通過するパスを記載
middlewareにリストに一致するリクエストパスが来る場合処理を通過しないようにする
urlディスパッチャーにsettingsのパスを利用してパターンを書き直す ← urlのみを変更してパターンバグになるのを防ぐ

投稿2015/07/02 08:10

maki

総合スコア72

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yokoK

2015/07/02 12:28 編集

回答ありがとうございます! 上記いただきまして、settings.pyに独自の値を設定したのですが、 __init__にて、リクエストが引数に取れないためリクエストパスが取得できず、判別がつきません。 こちらについて、リクエストを取得することはできるのでしょうか。
yokoK

2015/07/06 01:11

ありがとうございます! たしかに、そちらでしたら取れそうですね。 試してみます!
yokoK

2015/07/06 05:31

maki様、ありがとうございました。 教えていただきました方法にて対応できました。 対応した内容は下記となります。 1)setting.pyに、対象外とするURLリストを定義 2)Middleware.pyのprocess_requestにて、トークンチェックしていたため  その手前にて、対象URLかをチェックして対象/対象外を判別 以上です。ありがとうございました、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問