学习Django,我想建立一个人们可以上传图片的网站。整个帐户应用程序(创建帐户,更改密码等)已完成,现在我必须创建一个允许用户上传图像的应用程序。 我现在发现自己正在编写最终模板,但我不知道如何指定保存图片的路径。
我创建了一个Image模型,将用户提供的图像文件保存到/ media / images目录,如下所示:image = models.ImageField(upload_to='images')
。
用户必须填写的表单是:
class ImagePost(forms.ModelForm):
class Meta:
model = Image
fields = ('image','description','title')
所以,他必须提供图像,描述和标题(描述和标题是图像模型类的其他两个属性。
以下是处理逻辑部分的视图:
@login_required
def image_create(request):
if request.method == 'POST':
# form is sent
form = ImagePost(data=request.POST)
if form.is_valid():
# form data is valid
cd = form.cleaned_data
new_item = cd.save(commit=False)
# assign current user to the item
new_item.user = request.user
new_item.save()
# redirect to new created item detail view
return render(request,
'images/all_images.html',
{'new_item': new_item})
else:
# build form with data provided by the bookmarklet via GET
form = ImagePost(data=request.GET)
return render(request,
'images/image/create.html',
{'section': 'images',
'form': form,
})
最后处理表单的模板,目前看起来像这样:
{% extends "base.html" %}
{% block title %}Post an image{% endblock %}
{% block content %}
<h1>Post an image</h1>
<form action="." method="post">
{{ form.as_p }}
{% csrf_token %}
<input type="submit" value="Post it!">
</form>
{% endblock %}
当用户上传图片时,现在位于我的media / images目录中的文件名与其在用户PC上的名称相同。
如何找到该名称,以便我可以指定Django显示哪个文件?或者有没有办法重命名文件,使其与用户引入的标题匹配?
<img src="media/images/WHAT_IS_YOUR_NAME" class="image-preview">
答案 0 :(得分:0)
只需使用<img src="{{ image.image.url }}" class="image-preview">
image
是Image
模型的实例,第二个image
是Image
的模型字段,url
是ImageField
对象的属性。更多信息here,列出项目#3。