問題タブ [django-middleware]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1390 参照

python - Django エラー報告 - どのユーザーがエラーを引き起こしたかを知る方法は?

Django のエラー レポートをカスタマイズして、エラーを引き起こしたユーザーをメールで知らせてくれる方法はありますか?

問題があれば、私は Django 1.2 を使用しています。

よろしくお願いします!

0 投票する
2 に答える
223 参照

django - Django:サイトベーステンプレートのフォーム

検索ではなくフォームを作成する必要がありますが、サイトベースに存在する一種のプロファイルスイッチャーです。

これを行うための最良の方法は何でしょうか?私はミドルウェアにあまり精通していませんが、これはそれを調査する時のように聞こえますか?

または、テンプレートタグからフォームを読み込めると思っていましたか?

このサイト全体のフォームを実装するためのさまざまな方法を探しています。ありがとう。

良い例はGithubです。アカウントコンテキストの切り替えにより、現在のアカウントコンテキストに基づいてさまざまなページ/アクセシビリティが提供されます。

0 投票する
2 に答える
2450 参照

django - DjangoでHttps(SSLミドルウェア)を実装する方法

私はDjangoとWeb開発の初心者です。まさにこの質問を実装したい のですが、djangoで。私は多くのブログや質問を検索しましたが、これを実装する方法を正確に見つけることができませんでした。SSLミドルウェアDjangoは、私がよく理解できなかったものです。それが解決策である場合、誰かがそれを実装する方法を教えてもらえますか?

質問は明確ですか?または、いくつか追加する必要がありますか、コメントしてください。必要な変更を加えます。ご協力いただければ幸いです。よろしくお願いいたします。

PS:サーバーにSSL証明書を追加しました。だからそれは世話をします。

0 投票する
2 に答える
1640 参照

django - Django メッセージ フレームワークがテンプレート ループで機能しない

最近 Django 1.3 にアップグレードしましたが、メッセージ システムの使用を開始したいと考えています。

ミドルウェア、テンプレート コンテキスト プロセッサ、およびメッセージをINSTALLED_APPS

簡単な計算を行うビューに基づいてテストしているだけです。

管理画面にメッセージが表示されますが、base.html ファイルでメッセージをレンダリングしようとすると、次のエラーが発生します。

スタックでは、ここで失敗します。

for ステートメントも削除しましたが、まだ次のエラーが表示されます。

何か案は?

0 投票する
1 に答える
445 参照

django - ジャンゴにミドルウェアを入れるのはどれくらいコストがかかりますか

私は私の非常に単純なアプリのために書いています。

  1. アプリの Facebook キャンバス ユーザーにログインするには
  2. 訪問者の追跡を行う場合、ほとんどのコードは非常に単純です。

このアプリはおそらくそれほど複雑ではなく、かなりブログ システムに近いものです。ただし、ミドルウェアのアーキテクチャがリソースに関してどれだけコストがかかるかを知りたいです。

私が特に心配していることの 1 つは、固有の要求が行われるたびに新しい訪問者オブジェクトが作成されるという事実です。それは良い考えですか?

したがって、ミドルウェアは驚くべき DRY でアジャイルなコンセプトですが、パフォーマンスの点でどれだけ際立っているかということです。

ありがとう

0 投票する
0 に答える
756 参照

django - Django 認証アプリとミドルウェアをカスタム認証アプリと認証ミドルウェアに置き換える

django で認証アプリのユーザー テーブルを拡張する方法を調査した後、独自の認証アプリを作成することにしました。contrib.authアプリを置き換えるために必要なことは次のとおりです。

  1. AuthenticationMiddlewareクラスを作成し、設定ファイルでそれをポイントするMyAuth.models.User代わりに、すべてのリクエストにオブジェクトを追加します。django.auth.models.User
  2. カスタムを作成しますAuthenticationBackend
  3. を作成AuthenticationContextProcessorし、同様に設定ファイルでそれらをポイントします。

質問:

  1. 他のアプリまたはセッション ミドルウェア クラスで編集を行う必要はありますか?
  2. 独自の認証アプリを作成する基本的な理由は、ユーザー テーブルに十分なフィールドがなく、user_profile. セッションで使用できるように、すべてのリクエストにユーザー オブジェクトを追加していることに気付きました。しかし、ユーザーテーブルにフィールドを追加すると、ユーザーオブジェクトが大きくなり、すべてのリクエストに追加すると負荷が増加するだけです。私は正しいですか?ユーザー オブジェクトのサイズを大きくすると負荷の問題が発生しますか? それとも効果は無視できますか?
0 投票する
2 に答える
3309 参照

django - Djangoはミドルウェアのrequest.pathを変更します(URLのトークンで認証するため)

Stackoverflow の全知全能の皆様へ

Django 1.3 では、URL からトークンを取得し、(正しい場合) ユーザーをログインさせ、URL からトークンを削除する process_request ミドルウェアを作成しています。でも:

I) Django は、ミドルウェアで POST/GET データにアクセスしないことを推奨していますが、その理由がよくわかりません... request.path にも同じことが当てはまりますか? https://docs.djangoproject.com/en/dev/topics/http/middleware/#process-view

II) URL からトークンを削除したいので、/album3/pic42/~53Cr3t70K3n/like/-> /album3/pic42/like/. ただし、request.path を変更しても機能しません。ページは見つかりませんが、

  • ミドルウェアは正しく処理します (印刷で検証)

  • 直接入力/album3/pic42/like/しても機能します

  • エラー(トークン付き)が表示されますRequest URL: http://www.site.com/album3/pic42/like/

これに対する修正はありますか、それとも完全に間違った角度からアプローチしていますか?

前もって感謝します!

クライアント側で変更するには、明らかにリダイレクトが必要であることに気づきました(なぜそれを考えなかったのですか...)。ただし、たとえばパーソナライズされた画像にアクセスする場合など、新しいリクエストなしでサーバー側だけで書き換えることができると便利です。


Ps: 必要に応じて詳細を読み飛ばしてください

私は、パーソナライズされた電子メールをユーザーに送信する (送信する) サイトに取り組んでいます。ユーザーが電子メール内のリンクをクリックして、電子メール リンク内のトークンを使用して自動的にログインできるようにしたいと考えています。これは、通常のログインに追加されます。(人々が電子メールを転送する可能性があるため、安全性が低いことはわかっていますが、私のサイトには十分です)。URL は次のようになります: /album3/pic42/~53Cr3t70K3n/like/ ( http://www.site.comを削除すると、Django がそれを行います)

これに一致し、必要に応じてユーザーをログインさせるミドルウェア、トークンを有効な資格情報として受け入れるための認証バックエンド、およびトークン モデルを作成しています。


ミドルウェア process_request 関数: def process_request(self, request):

現在、リダイレクトで動作していますが、内部でも実行できるようにしたいと考えています。

0 投票する
1 に答える
300 参照

python - 秒単位 (または必要に応じて分単位) でユーザーのタイムアウトを処理する Pythonic/djangonic の方法

私の場合に最も近い例は、Django ajax チャット アプリケーションです。ルームは、アクティブなユーザーのリストを保持する必要があります。チャット内でユーザーのリストを表示する以外に、特定のルームには最大数のアクティブ ユーザーがいる場合があります。空きがない場合は、新規ユーザーの入場をブロックする必要があります。

現在、ajax を介して毎秒ポーリング ビューを呼び出すチャット クライアント ページがあります。投票ビューはルームのテキストを返します。ポーリングは、ある種の ping を実行することもできると思います。つまり、ユーザーを Room オブジェクトの active_user M2M フィールドに追加します (これまでのところ、これらはすべて用意されています)。次に必要なのは、ある種のタイムアウト後にその active_user リストからユーザーを削除するものです。

これを行うには 2 つの方法があると思いますが、秒単位 (または 10/15 秒) まで正確である必要があるアプリでは、どちらがより効率的か疑問に思っています。

  • このスレッドで Cookie / セッション / ミドルウェアを使用する(ただし、この方法は瞬間的な情報には機能しないように思われます)
  • 作成時とそれに続くすべてのpingで更新される日時フィールドを持つ明示的なUsers_Rooms「スルー」テーブルなどの別のモデル、および古いものをクリーンアップする関数を記述します

それは私が考えることができるすべてです。私は、すべての部屋のすべてのユーザーに対して毎秒 mySQL を実行することが良い考えであるかどうかを理解しようとしており、その 1 秒が実際にタスクに最適なオプションであるかどうか疑問に思っています。ありがとう!

0 投票する
1 に答える
1994 参照

django - Django 設定の連結 "MIDDLEWARE_CLASSES"

from django.conf import global_settingsを使用してdjangoのデフォルト設定をインポートし、追加したいと思いますMIDDLEWARE_CLASSES。自分の設定でこれを行うのが好きなので、追加したものとデフォルトのものを把握できます。したがって、私の設定ファイルは次のようになります。

この戦略は、 などの他の設定でも機能しますTEMPLATE_CONTEXT_PROCESSORSが、試してみると機能しません。print global_settings.MIDDLEWARE_CLASSESDebug Toolbar Middlwareを追加した後に追加しましたが、これは使用時の出力でしたrunserver

スクロールすると、設定が 2 回実行されていることがわかります。2回目は設定を再度追加します。どうすればこれを防ぐことができますか? 設定でハードコーディングする必要がMIDDLEWARE_CLASSESありますか?また、デフォルトのdjango設定をインポートしない正当な理由はありますか?

0 投票する
1 に答える
133 参照

django - AJAX呼び出しの場合はSESSION_SAVE_ON_EVERY_REQUESTをバイパスするか、より適切なソリューション

すべてのページにログインする必要があるプライベートサイトがあります。ユーザーがレコードを編集しようとするとき、レコードをロックしたくありません。他の人が利用できるように記録を残したい。私は、dajax / dajaxiceを使用してdjangoへのAJAX呼び出しを使用して、レコードの編集の最新の人物と日時を取得するシステムを考案しました。最新の編集が現在のユーザーによって行われなかった場合、アラートボックスは、他のユーザーがレコードを開いてから編集を行ったことをユーザーに通知します。ユーザーはページを更新して最新バージョンのデータを取得する必要があります。

これはすべてうまくいっており、私たちの状況に完全に適合しています。セッションがタイムアウトしました。タイムアウトすると、ユーザーはログインプロンプトに移動します。ユーザーがページを開いたままにしてコンピューターを離れる場合に備えて、機密データを保護する必要があります。これも完璧に機能しています。

私の問題は、データのバージョンをチェックしてデータのバージョンが変更されているかどうかを確認するためにAJAX呼び出しが行われると、セッションも保存されるため、ページに無人でいる時間がどれだけ長くてもセッションがタイムアウトしないことです。

SESSION_SAVE_ON_EVERY_REQUESTをバイパスして、このリクエストのみが保存をトリガーしないようにする方法はありますか?他のすべてのビューでセッションを手動で保存できることはわかっていますが、それは間違っているようです。要求されたビューをチェックし、このビューでない場合にのみセッションを保存するミドルウェアを作成できる可能性があると思いますが、それが最善の解決策でもあるかどうかはわかりません。

助言がありますか?

前もって感謝します。