Django-file-uploading
Django-ファイルのアップロード
一般に、Webアプリがファイル(プロフィール写真、曲、pdf、単語など)をアップロードできると便利です。 この章では、ファイルをアップロードする方法について説明します。
画像をアップロードする
画像の再生を開始する前に、Python Image Library(PIL)がインストールされていることを確認してください。 画像のアップロードを説明するために、myapp/forms.pyでプロファイルフォームを作成しましょう-
ご覧のとおり、ここでの主な違いは forms.ImageField だけです。 ImageFieldは、アップロードされたファイルが画像であることを確認します。 そうでない場合、フォームの検証は失敗します。
それでは、アップロードしたプロファイルを保存するための「プロファイル」モデルを作成しましょう。 これはmyapp/models.pyで行われます-
モデルを見るとわかるように、ImageFieldは必須の引数 upload_to を取ります。 これは、画像が保存されるハードドライブ上の場所を表します。 パラメーターは、settings.pyファイルで定義されたMEDIA_ROOTオプションに追加されることに注意してください。
フォームとモデルができたので、myapp/views.pyでビューを作成しましょう-
見逃してはならない部分は、ProfileFormの作成時に変更があったため、2番目のパラメーター request.FILES を追加したことです。 渡されなかった場合、フォームの検証は失敗し、画像が空であることを示すメッセージが表示されます。
これで、フォームとリダイレクトページに savedl テンプレートと profilel テンプレートが必要になります-
次に、開始するにはURLのペアが必要です:myapp/urls.py
「/myapp/profile」にアクセスすると、次のプロファイルテンプレートがレンダリングされます-
そして、フォームの投稿で、保存されたテンプレートがレンダリングされます-
画像のサンプルがありますが、画像だけでなく別の種類のファイルをアップロードする場合は、モデルとフォームの両方の ImageField を FileField に置き換えてください。