質問:
複数画像のアップロードを実現したいです。下記に現状のコードを記載していますので、根本的に訂正していただきたいです
現状の概略:
htmlで複数アップロードさせて、views.pyでループで画像はフルパス保存しています(見ていただいた方が早いので下記に必要な箇所を抜粋して載せます)
下記の方法だと、画像のアップロードはできるのですが、特定の画像を画面に表示させるときに、表示されなくなります(おそらく、画像をフルパスで指定して保存しているため、Django内部でurlと画像のパスが紐づいていない??)
directory構造は以下のようになっています
Pyhton
1mysite 2|-config 3 |-settings.py 4 <省略> 5|-myapp 6 |-views.py 7 |-models.py 8 <省略> 9|-templates 10 |-upload_form.html 11 |-upload_file_complete 12|-media
config/settings.py
Pyhton
1<省略> 2STATIC_URL = '/static/' 3STATIC_ROOT = os.path.join(BASE_DIR, 'static') 4MEDIA_URL = '/media/' 5MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 6<省略>
myapp/models.py
Pyhton
1class FileUploadModel(models.Model): 2 """3つのフィールドを定義しています 3 """ 4 file_name = models.ImageField(upload_to='images') 5 update_time = models.DateTimeField(default = datetime.now) 6 user_name = models.CharField(verbose_name='ユーザ名', max_length=10)
myapp/views.py
Pyhton
1 2def upload_form(request): 3 if request.method == 'GET': 4 return render(request, 'upload_form.html', {}) 5 elif request.method == 'POST': 6 for count, file in enumerate(request.FILES.getlist("files")): 7 with open(r'path/to/img_dir'+ file.name, 'wb+') as destination: 8 for chunk in file.chunks(): 9 destination.write(chunk) 10 insert_data = models.FileUploadModel(file_name = file.name,user_name=request.user.username) 11 insert_data.save() 12 return redirect("myapp:upload_file_complete")
templates/upload_form.html
HTML
1<form method="post" enctype="multipart/form-data"> 2 {% csrf_token %} 3 <input type="file" name="files" multiple/> 4 <input type="submit" value="Upload"/> 5</form>
templates/upload_file_complete.html
HTML
1<div>Complete</div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。