Home > Django > Django newformsのImageFieldを使う

Django newformsのImageFieldを使う

  • 2007-04-20 (金) 1:24
  • Django

画像アップロードを作りたくて、Django newformsのImageFieldを使ってみた。
ファイル名周りでいろいろ問題がありそうだけど、ユーザーがアップしたファイル名はどうせ使わない仕様のつもりだったので、まーいいかと思って試した。
どうやらリリースには含まれていないので、ここからパッチを入手。
#3297 (newforms: Implement FileField and ImageField) - Django Code - Trac

現時点で最新のパッチを使った。

djangoと同じディレクトリ(ここでは$HOME/local/lib/python/site-package)にパッチファイルを置いて以下のコマンドを実行

patch -p0 < 4921-newforms-file-imagefield.diff

フォームの定義はこんな感じ

from django import newforms as forms
class ImageForm(forms.Form):
image = forms.fields.ImageField(widget=forms.FileInput(), required=True)

次に実際にファイルを読み込んでサムネイルを保存するところのサンプル。
これを少し改造していけばそれなりに動くものになるかな。
(微妙に省略していますが雰囲気はこんな感じ)

from cStringIO import StringIO
from PIL import Image
 
small_size = 200, 200
filepath = ‘/tmp/hoge/fuga.jpg’
 
post_data = request.POST or None
post_data.update(request.FILES) # 注意:ファイル情報はPOSTじゃなくってFILEに入るよ
 
form = ImageForm(post_data or None)
 
if form.is_valid():
form_data = form.clean_data
image = form_data['image']['content']
 
im_thumb = Image.open(StringIO(image))
im_thumb.thumbnail(small_size)
im_thumb.save(filepath)
[/code]

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.joyfullife.jp/archives/2007/04/20012425.php/trackback
Listed below are links to weblogs that reference
Django newformsのImageFieldを使う from 30からのBlog

Home > Django > Django newformsのImageFieldを使う

Return to page top