Posted at 2010-08-19 11:12:56 under テクノロジ (by key)

仕事上必要だったので調べてみた。

Django本家のCross Site Request Forgery protectiontsuyuki makotoさんのエントリ を参考にして変更した。 以下まとめ。

  • MIDDLEWARE_CLASSESに django.middleware.csrf.CsrfViewMiddleware を追加
  • ビューで django.views.decorators.csrf.csrf_protect をimport
  • 当該のビューに @csrf_protect を追加
  • フォームに {% csrf_token %} を追加

これでCSRFプロテクションが有効になる。 試したところPOSTメソッドにしか反応しないようなので、 各ビューにゴリゴリと@csrf_protectを書き足していって大丈夫そう。

Tags: django, python
Posted at 2010-08-18 02:03:59 under テクノロジ (by key)

ユーザリクエストなどによってform.ChoiceFieldのchoicesを動的に変更したかった。 Formオブジェクトのインスタンスを拾ってから_set_choicesという内部メソッドで上書きすれば可能。

views.py例:

values = Equipment.objects.filter(user=2).exclude(group__user=2).values_list('id', 'name').all()
form = EquipmentGroupForm()
form.fields.get('equipment')._set_choices(values)

return direct_to_template(request, 'equipment/hoge.html', extra_context={'form':form})

メソッドの先頭に_がついてることから解るように、 内部メソッドを呼び出しているのでスマートではない。 フォーム初期化時に引数等で渡せればベストなのだろうけど、うまいやり方が見つけられなかった。

Tags: django, python
Posted at 2010-08-06 18:18:29 under テクノロジ (by key)

Python Imaging Library=PILはたくさんの画像フォーマットをサポートしておりJPEGも当然その中に含まれます。 渡されたファイルがProgressive JPEGかどうかを検査したかったので、 PILで確認できるかなーと考えて確かめてみました。

Continue reading
Tags: PIL, python
Posted at 2010-08-03 09:38:35 under テクノロジ (by key)

RTXが渡されたIPアドレスを知りたかったので、 python telnetlibを使ってIPアドレス文字列を取得するコードを書いてみた。

telnetlibは、telnet経由で文字列をやり取りするためのライブラリ(という理解)。 文字列を待って応答を返すexpectというコマンドラインツールがあるのだが、それに良く似ている。 例えば、コマンドプロンプトやパスワードプロンプトを待って、 特定の文字列を送信するといった、対話処理を自動化することが出来る。

Continue reading
Tags: python
Posted at 2010-07-14 13:02:26 under テクノロジ (by key)

Sphinxでドキュメントを書いたりしています。

以前からシーケンス図やブロック図を描くのに それぞれ mscgengraphviz といったツールを使っています。 これらのソフトウェアは、テキスト形式で定義を記述する(dot形式というらしい)と画像を生成してくれます。

単純に画像を作るだけならMicrosoft VisioやOmniGraffleでいいのですが、 テキストベースでドキュメントを書いている場合、いろんなアプリケーションを 横断しなくてはならず、ちょっと面倒なんですよね。 mscgenやgraphvizを使えばテキストファイルのみで管理することができるというわけです。

Continue reading
Tags: python, sphinx