問題タブ [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.
django - コードをプラグインできるように、ミドルウェアとDjangoのビューの間に何かありますか?
コードをプラグインできるようにとviewの間に何かがありますか、それともこの機能を提供するためにmiddleware
から何かをサブクラス化する必要がありますか?Django
最初に、なぜこれが必要なのかを説明しましょう。おそらく、あなたが提案できるより良い解決策があるでしょう。いくつかの構成に基づいて、いくつかのURLを制限したいと思います。そして、-この構成をURL構成の一部にしたい-提供された構成に従って、他のビューなどにリダイレクトしたい。
「URL設定の一部」とは、次のようなものです。
ミドルウェアでやるべきことのようですが、2つの理由でミドルウェアでやりたくないです。-別の構成を維持したくありません。-URLパターンの正規表現マッチングをもう一度やりたくないのですが、URLリゾルバーはすでにそれを行っています
したがって、表示の直前にいくつかの機能をプラグインする方法を見つけて、提供された構成に到達できれば、問題は解決します。
django - スニペットのインストール
djangoにスニペットをインストールするにはどうすればよいですか?(具体的にはこれ)
私はファイルを持っていて、それをロードするために/{project}/snippets/EnforceLoginMiddleware.py
内部で任意の数の順列を試しただけでなく、無駄にグーグルしました:(MIDDLEWARE_CLASSES
django snippets install
どんな助けでもありがたいです:)
PS(スニペットのインストールに関するドキュメントや例が見つからないのはなぜですか。たぶん私はただの悪いグーグルです)
python - Django のサイトごとのキャッシュ ミドルウェアが機能しないのはなぜですか?
私は Django 1.3 ベータ 1 を使用しており、memcached をセットアップしています。Djangoの指示に従ってsettings.py
変更を加えました:
これは私がヒットしているテスト ビュー関数です。
私は常にuncached
開発サーバーの出力に出力され、データベースに常にヒットします。なんで?私は何かを見逃していますか、それともキャッシングを完全に誤解していますか?
編集#1:
テンプレート フラグメント キャッシングは問題なく機能します。何か足りないだけですか?助けてください。
django - ミドルウェアで SITE_ID を動的に変更することは良い考えですか?
(これは、 「複数のサイトの要求に基づいて Django 設定変数を動的に変更する」の複製ではありません。前の質問では、実行時にはるかに深刻な再構成を行うことがカバーされているためです)
プロジェクトのドメイン/ホストにコンテンツを結び付けるために使用sites.Site
します(外部キーを介して)。適切なSite
ベースの選択request.META['HTTP_HOST']
は、カスタム ミドルウェアで行われます。
ただし、そのようなsites
フレームワークの使用は正確には正規の方法ではないことを認識しています(異なるドメインに異なるデータを提供するアプリケーションのインスタンスが1つsites
ありますが、 AFAIKは、ドメインごとに1つずつ、複数のインスタンスで動作するように設計されています)。
最も気になる要素は、アプリケーションの現在のインスタンスを1つ(ドメイン)settings.SITE_ID
に結び付ける静的設定です。Site
これはいくつかの場所で使用さcontrib.auth
れます (パスワード リセット メールで完全な絶対 URL を作成するため)。したがって、にSITE_ID
基づいて動的に変更するのはクールですrequest.META['HTTP_HOST']
。
だから私の質問は:
SITE_ID を動的に (つまり、ミドルウェアで) 変更することは良い考えですか?
ドキュメントには、実行時に設定を変更することは一般的に悪い考えであると記載されていますが ( here )、おそらくこの場合 (十分に早い段階で呼び出されるミドルウェアで) 行うことは問題ありません。
(編集):
ローカルでは期待どおりに動作します (Django テスト クライアント) が、複数のスレッドやプロセスを持つ運用環境での同時要求を検討しています。
django - 例外メール通知中の Django フィルタ フィールド
私たちの製品では、Django の自動化された方法を使用して、例外に関する電子メール通知を受け取ります。
これは 1 つの問題でうまく機能します。POST データ全体がすべての開発者に電子メールで送信されます。
一部の POST フィールドは、機密性の高いユーザー データ (パスワードまたはさらに悪い - クレジット カード) である可能性があります。
どのフィールドをフィルタリングするかを Django に伝える方法はありますか? 例外で特定のフィールドの request.POST をクリアするミドルウェアを作成することを考えていましたが、残念ながら request.POST を変更できないようです。
何か案は ?
python - Django で始まるトランザクション
トランザクション管理に関する Django ドキュメントの章を読みました。私が理解していることから、トランザクションTransactionMiddleware
は呼び出されるとすぐに開始されます。次に、 を使用して@commit_on_success
、@commit_manually
トランザクションの終了を制御する可能性があります。
私の質問: TransactionMiddleware を完全に取り除くことなく、トランザクションの開始を制御する可能性はありますか? 私の懸念は、Django フレームワークの多くの部分が実際には TransactionMiddleware の存在に依存していることです。明示的に指定したアプリケーションに属するビューを除いて、すべてのビューに使用したいと思います。何よりも、特定のグループのビューのトランザクション動作を最初から最後まで完全に制御できるようにしたいと考えています。どのようなアプローチを取るべきですか? 私を助けるための外部アプリ、ライブラリはありますか? 最初のデータベース ヒットが発生するとすぐに、トランザクションは積極的に作成されますか、それとも遅延して作成されますか?
python - Django - エラー socialregistration.middleware
ちょうど今、リモートリポジトリをサーバーからコンピューターにmercurialで複製しています。
データベース エンジンとして sqlite3 を設定するための settings.py を変更し、Django 組み込み Web サーバーを実行しようとしました。
私のサーバーではすべて問題ありません。なぜローカルホストでこれを行うのですか?
-- UDPATE
pyfacebookをインストールして修正しました。/にアクセスすると、このエラーが発生します
django - ミドルウェア認証に関するdjangowwwとwww以外の問題
Djangoアプリで一貫性のない動作をしています。
wwwなしでログインし、wwwを前に付けると、認証されません。また、それらのすべての組み合わせも認証されません。(www.mydomain.comとmydomain.comは、認証に関して異なるサイトが好きです)
認証コードが重要な場合は、ここのチュートリアルに基づいてミドルウェアを作成しました:http: //onecreativeblog.com/post/59051248/django-login-required-middleware
これまでのところ、を使用してwwwの追加を強制する問題を修正しましたPREPEND_WWW = True
が、それでも問題を理解したいと思います;)
誰かが何が起こっているのか考えていますか?前もって感謝します!
django - Djangoでのセッションを必要とするミドルウェアを適切にテストするにはどうすればよいですか?
djangoでミドルウェアをテストする方法を見つけようとしています。私が書いているミドルウェアは、特定の条件下でユーザーにログを記録します(電子メールで送信されたキーが有効な場合)。だから明らかに私はとに依存しdjango.contrib.auth
ていdjango.contrib.sessions
ます。
ログイン部分のテストで問題が発生しています。私はこのようなリクエストをしています:
セッションが設定されていないため、失敗します。次に、テストクラスに小さなスニペットを書きました。
が原因で失敗し'User' object has no attribute 'backend'
ます。その意味はわかりませんが、インストールしたミドルウェアをすべて実行する必要があるのではないかと思います。
ミドルウェアを実行するためだけにこれを偽のビューにしたくはありませんが、現時点では別のオプションを見つけることができません。
だから私はただ知りたかったのですが、このウサギを穴の奥まで追いかける前に、ダクトテープをそれほど必要としない方法はありますか?
django - Djangoミドルウェアクラスの場合、process_requestはどのように正常に機能しますが、process_exceptionは呼び出しではありませんか?
私はDjangoで独自のミドルウェアクラスを作成しましたが、これは最近まで問題なく機能していました。奇妙なことに、process_requestは正常に呼び出されますが、応答が500(内部サーバーエラー)の場合でも、process_exceptionはまったく呼び出されません。なんで?
ミドルウェアクラスを、設定ファイルのインストール済みミドルウェアのリストの最初のエントリとして宣言するか、最後のエントリとして宣言するかは関係ありません。
ありがとう、デイブ