【发布时间】:2020-12-15 13:57:02
【问题描述】:
我正在尝试创建一个 Django 应用程序,允许用户从 /images/ 文件夹(类似于我的应用程序中的静态文件夹)上传和下载图像。我的 upload 部分应用使用 ImageField 将图像文件路径存储到 MySQL 数据库中:
models.py
class ImagefieldModel(models.Model):
title = models.CharField(max_length = 200)
img = models.ImageField(upload_to = "images/")
class Meta:
db_table = "imageupload"
forms.py
class ImagefieldForm(forms.Form):
name = forms.CharField()
image_field = forms.ImageField()
fileupload.html
{% extends "main/header.html" %}
{% block content %}
<head>
<title>Django File Upload</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit">
</form>
</body>
{% endblock %}
views.py
def imgupload(request):
context = {}
if request.method == "POST":
form = ImagefieldForm(request.POST, request.FILES)
if form.is_valid():
name = form.cleaned_data.get("name")
img = form.cleaned_data.get("image_field")
obj = ImagefieldModel.objects.create(
title = name,
img = img
)
obj.save()
print(obj)
messages.info(request, f"image uploaded successfully!")
return redirect("main:basehome")
else:
form = ImagefieldForm()
context['form'] = form
return render( request, "main/fileupload.html", context)
对于我的应用程序的下载部分,我希望该应用程序列出/image/ 文件夹中的所有图像,并且用户可以选择要下载到其下载文件夹中的图像。使用 ImageField 时如何在 Django 中执行此操作?
【问题讨论】:
-
您现在遇到的语法错误是什么?
-
@markwalker_ 我设法找到了另一种选择。我只是使用“ImagefieldModel.objects.all()”从文件中获取所有要显示的图像,然后右键单击“下载”图像。不过如果有办法下载图像文件会很好。通过用户单击下载按钮下载特定图像。