2011-10-18 22 views
3

Windows 7でmod_wsgiを使用してApache2経由でPyjamasとDjangoを実行しています。これらの設定で問題が発生しているとは思われません。それが機能していないのは、パジャマが生成したフォームから情報をPOSTすることです。私のアプリケーションでパジャマが生成したフォームを使用しようとすると、403sが生成されます(「CSRF検証に失敗しました」というエラーページ)。パジャマ+ Django => CSRFの混乱、403エラー

CSRFとDjango、Django、Ajaxなどの外部の研究を多大に行ってきましたが、ここでCSRFとパジャマに関するすべての回答を読んでいます。このような状況で何をすべきかだけを知っている人には、私は質問の本質を打ち砕いたと思う。

どのようにして{% csrf_token %}をパジャマが生成したフォームに入れますか?私のパジャマのページはPajamasの.pyファイルから生成され、ハードコードされたものがいっぱいのフォルダが作成されているため、CSRFのトークンは永続的ではないと理解しているため、これは不可能なようです。どのように私は現在のCSRFトークンを既にコード化されたフォームに統合するのでしょうか?

詳細についてはお気軽にお問い合わせください。この問題は非常に難しいです。パジャマの統合に関する公開情報はありません& Djangoはこれについて考えています。 DjangoのCSRFを認識している唯一の解決策は、おそらくCSRF保護を無効にする必要があると言います(でも可能ですが、私の代わりにどのような保護を置くことができますか?いずれにしてもCSRF保護を無効にするという恐ろしいアイデア?

ありがとうございました!

答えて

3

クッキーからCSRFトークン(HTTPリクエストの一部)を取得するために、いくつかのJavaScriptを書いてから、それをsubmit時にフォームに追加する必要があります。出発点のために、この答えで

ルック:Django CSRF check failing with an Ajax POST request

ここで重要なのは、フォームが送信されるまで、彼らはトークンを扱う延期ため、JavaScriptが、あなたのパジャマで生成されたファイルのように永続的にできることです。

+0

コンパイルする前に、適切なJavascriptを.py Pajamasファイルに追加することを理解します。しかし、あなたが提供したリンクはjQuery固有のようだが、JavaScriptをほんの少ししか理解していない人(そしてjQueryの拡張子)として、どうすればjQueryに依存しないようにするのか分かりません...ちょうど適切なソリューションのように、jQueryに依存するのはその答えのコードです – hangtwenty

+1

私は自分自身のJavaScriptマスターではないので、ページにjQueryを入れたり、少なくとも非圧縮バージョンをダウンロードして「trim」関数を抽出したりする方が簡単です。文字列の始まりと終わりから空白を取り除くようなものは、おそらく些細なことでしょう。答えに必要な部分は 'function getCookie(name)'です。次に、 'getCookie( 'csrftoken')'を使ってクッキーデータを取得し、これを隠しフィールドとしてフォームに追加することができます(これは '{%csrf_token%}'テンプレートです)。 –

+0

さて、チケットのように思えましたが、ちょうどDjangoに関連するPajamasページを合理的な方法で提供できるのであれば、私は確信していますが、DjangoのURLインターフェイスをハッキングしてPajamas正しく表示するには...あまりにも多くの不満と、このパジャマのことを続けるための十分な文書がありません。 Djangoと統合していないときは涼しいかもしれないようですが、その統合についての文書はあまり欠けています。私はjQueryに完全に切り替えるつもりです。あなたの時間をありがとう! – hangtwenty