前提・実現したいこと
画像アップロードの動作について、
それぞれのプログラムがどう関与して動作しているのか分かりません。
SNSアプリに画像アップロード機能を追加しようと考えているので
アドバイス頂けないでしょうか。
該当のソースコード
Python/Djangoを使用しています。
models.py class UploadFile(models.Model): file = models.ImageField('画像ファイル') def __str__(self): return self.file.url -------------------------------------------------- forms.py class UploadModelForm(forms.ModelForm): class Meta: model = UploadFile fields = '__all__' -------------------------------------------------- views.py class Upload(generic.CreateView): model = UploadFile form_class = UploadModelForm success_url = reverse_lazy('sns:filelist') class UploadListView(generic.ListView): model = UploadFile --------------------------------------------------- uploadfile_form.html <form action="" method="POST" enctype="multipart/form-data"> {{ form.as_p }} {% csrf_token %} <button type="submit">送信</button> </form> --------------------------------------------------- uploadfile_list.html {% for upload in uploadfile_list %} <td><img src="{{ upload.file.url }}" ></td> {% endfor %} --------------------------------------------------- settings.py ※追記のみ MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') --------------------------------------------------- urls.py ※追記のみ urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ---------------------------------------------------
試したこと
uploadfile_form.html から画像を送信すると、mediaフォルダへ画像が保存されます。
その際、既に同じ名前のファイルがある場合、ファイル名+ランダムな英数字(?) に改名されます。
管理画面(DB)には、(UploadFile)モデル → (ファイルパス名)テーブル → 画像ファイル:(ファイル名)
の構成で保存されている。
ということは確認して分かりました。
疑問点
結果がどうなるかは見てわかりますが、どの工程が何の役割を果たしているのかが分かりません。
model = UploadFile というプログラムが何度か出てきますが、
そのたびにmodel.pyを確認してるの?なんで??という状態です。
1つ1つの処理を日本語化して欲しい。とまでは時間が掛かると思うので
なんとなくイメージがつかめるようなヒントが欲しいです。
よろしくお願い致します。
あなたの回答
tips
プレビュー