19841
...@gmail.com> wrote:
> はじめまして、平野と申します。
> Django1.0を使って画像をアップロードする仕掛けを作っています。
> そこで、ImageFieldを用いた画像の保存処理を行わせたいのですが、
> うまくいかず詰まってしまっています。
> 自分はこうやったよーと言ったアドバイスを頂ければと思い投稿しました。
> 以下、状況となります。
> (http://d.hatena.ne.jp/Lambda_groove/より)
> ========================================================
> Django1.0を使った画像のアップロードで詰まった。
> 何がダメだったかまとめてとりあえず対策を調査。
> どこかが間違っているコード。
> views.pyの抜粋
> if request.method == 'POST':
> form = ArticleSubmitForm(request.POST, request.FILES)
> if form.is_valid():
> form.full_clean()
> cleaned_data = form.cleaned_data
> pub_date = forms.DateTimeField()
> cleaned_pub_date = pub_date.clean(datetime.datetime.now())
> article = Article()
> article.subject = cleaned_data["subject"]
> article.body = cleaned_data["body"]
> article.photo_name = cleaned_data["photo_name"]
> article.image = cleaned_data["image"]
> article.pub_date = cleaned_pub_date
> article.save()
> views.pyの抜粋の続き
> class ArticleSubmitForm(forms.Form):
> subject = forms.CharField(label="タイトル",
> max_length=200,
> required=True)
> body = forms.CharField(label="本文",
> max_length=2000,
> widget=forms.Textarea,
> required=True)
> photo_name = forms.CharField(label="写真の説明",
> max_length=200,
> required=True)
> image = forms.ImageField(label="ファイル",
> widget=forms.FileInput,
> required=True)
> models.py
> from django.db import models
> class Article(models.Model):
> subject = models.CharField(max_length=200)
> body = models.TextField(max_length=2000)
> photo_name = models.CharField(max_length=200)
> pub_date = models.DateTimeField("date published")
> image = models.ImageField(upload_to="img")
> class Admin:
> list_display = ("subject",
> "body",
> "photo_name",
> "pub_date",
> "image",
> )
> 状態。
> 登録処理自体は走る。
> そして画像がsettings.pyのMEDIA_ROOT/imgに保存されない。
> ディスクの中身を片っ端から探したがどこにも画像はいない。
> 保存できてないのに例外すら出ないという事はさておき、
> バグ取りのとっかかりすらない状態。
> 対策。
> * リクエスト側の<input type="file" />から送信されるファイルデータは、必ず<form
> enctype="multipart/form-data">から送らせること。基本だが忘れてた。
> * PILはインストールしてあるか?ないとsyncdbした際エラーが吐かれる。ImageFieldを使いたかったのでインストールし
> た。
> * A2Cさんのブログのやり方でもダメだった。
> * Vistaだからか?と思いLinux環境でも試したがダメ。
> * piro_sukeさんのブログのやり方だと、必要なライブラリを配布しているサイトが死んでて試せず。
> ========================================================
> 以上、よろしくお願いします。