問題タブ [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 投票する
9 に答える
18285 参照

python - User-Agent に基づいて Django テンプレートを変更する

Djangoのサイトを作ったことがあるのですが、クーレイドを飲んでしまったのでiPhone版を作りたいと思っています。よく考えた結果、次の 2 つのオプションを思いつきました。

  1. i.xxxx.com のようなまったく別のサイトを作成します。Django のサイト フレームワークを使用して、同じデータベースに結び付けます。
  2. ユーザー エージェントを読み取り、テンプレート ディレクトリを動的に変更するミドルウェアの時間を見つけます。

ただし、オプション 2 の方が望ましいと思います。主に、Django のドキュメントがその場で設定を変更することを推奨していないため、いくつかの留保があります。私がやりたいことをするスニペットを見つけました。私の主な問題は、それを可能な限りシームレスにすることです。自動でユーザーに透過的にしたいと思います。

他の誰かが同じ問題に遭遇しましたか? Django サイトの iPhone バージョンの作成にどのように取り組んだかについて、共有したい人はいますか?

アップデート

ミドルウェアとテンプレート呼び出しの微調整を組み合わせました。

ミドルウェアにはminidetectorを使用しました。大量のモバイル ユーザー エージェントを検出するので、気に入っています。ビューで request.mobile を確認するだけです。

テンプレート呼び出しの微調整:

これは、両方のバージョンがあることがわかっているすべてのビューに使用します。

TODO:

  • check_mobile('template_name.html') を使用する必要がないように、render_to_response の拡張バージョンでrequest.mobileにアクセスする方法を理解してください。
  • モバイル バージョンが存在しない場合は、以前のテンプレートを使用して通常のテンプレートに自動的にフォールバックします。
0 投票する
3 に答える
3256 参照

python - Appengine の webapp フレームワークにミドルウェアを追加するにはどうすればよいですか?

appengine webapp フレームワーク (リンク) を使用しています。Django ミドルウェアを追加することは可能ですか? 例が見つかりません。現在、FirePython ミドルウェアを動作させようとしています (リンク)。

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

django - Django-モデルインスタンスビューのカウント(「トップエントリ」アプリの場合)

私は新しく、混乱しています。記事とブログモデルの両方の「トップヒット」インスタンスを追跡するモジュールを作成したいと思います。記事やブログモデルのコードには触れたくありません。これはミドルウェアの候補ですか?見てHttpRequest.path

0 投票する
3 に答える
393 参照

django - 自分のモデルに投票するユーザーを制限する方法

2 つのモデルの投票アプリケーションとして django-voting を使用しています。これらの両方のモデルには「作成者」フィールドがあります。

django-voting アプリを変更せずに、この特定のユーザーが作成者として設定されているモデルにユーザーが投票するのを制限するにはどうすればよいですか?

Django ミドルウェアが最初に頭に浮かぶのですが、それが "proces_view" 関数であることがわかりません。ミドルウェアが正しい方法だと思われる場合は、その方法の例を挙げてください。

0 投票する
4 に答える
7663 参照

python - 条件付きDjangoミドルウェア(または管理システムを除外する方法)

サイト全体で作成したミドルウェアを使用したい(ページ数が多いため、すべてのページにコードを使用したかったので、デコレータを使用しないことにしました)。唯一の問題は、管理コードにミドルウェアを使用したくないということです。ミドルウェアはアクティブになっているようです。

おそらくsettings.pyまたはurls.pyを構成する方法はありますか、それとも管理システムのページで実行されないようにするためのコード内の何かがありますか?

どんな助けでも大歓迎です、

乾杯

ポール

0 投票する
3 に答える
655 参照

django - Django でリクエストごとに Cookie ヘッダー値を変更する

どういうわけか、Cookie の値はリクエストごとに変わります。

認証およびセッション ミドルウェア (Vary: Cookie ヘッダーを追加) を使用しているためです。ページをキャッシュできません。

この動作を変更する方法のヒントはありますか?

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

django - 頻繁に変更されないスニペットには、ミドルウェアまたはカスタム テンプレート タグを使用します。

サイドバーに入れたい小さなスニペットがあります。スニペットは各ページに表示され、安価に取得できますが (私の非常に遅いネットブックでは約 50 ミリ秒です!)、あまり頻繁に変更されないため、キャッシュしたいと思います (部分的には、まだ Django のキャッシュを使用したことがないためです)。フレームワーク、そして私は学びたいです)。

ここに行く最善の方法がわかりません-ミドルウェアまたはカスタムテンプレートタグ? これらのアプローチでキャッシングを実装するのがどれほど簡単かはわかりません。これは、実行したい非常に標準的なこと (つまり、各ページに表示されるフラグメントのフラグメント キャッシュ) であるため、Djangonicの方法があると確信していますが、それが何であるかを見つけることができません。

どのようにしますか?

0 投票する
3 に答える
1939 参照

python - Django ミドルウェアでアドレスを変更する

可能かどうかはわかりませんが、ミドルウェアを使用して URL の末尾にいくつかのパラメーターを追加したいと考えています。要求された URL を変更した後、リダイレクトせずに実行できますか?

すなわち。ユーザーがクリック: .../some_link すると、ミドルウェアがそれを次のように書き換えます: .../some_link?par1=1&par2=2

他の方法は、応答を変更してすべての HTML リンクを置き換えることですが、それは私がやりたいことではありません。

ありがとう

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

django - DjangoのCSRFミドルウェアからの大量の誤検知?

Djangoの寄稿者であるCSRFミドルウェアから大量の誤検知が発生しています。サイトの通常の使用から、CSRFが偽造攻撃の疑いとしてリクエストのブロックを開始する場合が多くあります。

他の誰かがこのような問題を抱えていますか?私はDjangoのSVNブランチを使用しているので、最新バージョンのCSRFミドルウェアを使用しています。これらの問題をどのように診断できますか?

更新:本番サイトと開発サイトでこれらの誤検知が発生しています。それらは散発的に発生します。私のサイトはサブドメインを使用しており、異なるサーバーで実行されているがサブドメインで区切られているサイトの異なる開発/本番バージョンがあります。CSRF攻撃の警告をトリガーするものは何ですか?開発Cookieが本番サイトに送信されたときですか?同じログインユーザーのサブドメイン間を移動すると問題が発生しますか?

0 投票する
3 に答える
14139 参照

django - 言語とdjangoロケールを検出します-url

英語とスペイン語でウェブサイトを展開し、ユーザーのブラウザ言語を検出して、正しいロケールサイトにリダイレクトしたいと思います。

私のサイトはwww.elmalabarista.comです

django-localeurlをインストールしましたが、言語が正しく検出されていないことがわかりました。

これは私のミドルウェアです:

しかし、私のOSとブラウザの設定がスペイン語であるにもかかわらず、サイトは常に米国に到達します。

次に、locale-urlのミドルウェアをハックして、次のようにします。

ただし、これは言語を正常に検出しますが、「en」のURLを「es」にリダイレクトします。したがって、英語でナビゲートすることは不可能です。

更新:これは、 「/」の場合の修正を含む最終コード( Carl Meyerからの入力後)です。