Django上传图片的路径

时间:2017-03-07 16:11:28

标签: python django image path upload

学习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">

1 个答案:

答案 0 :(得分:0)

只需使用<img src="{{ image.image.url }}" class="image-preview">

即可

imageImage模型的实例,第二个imageImage的模型字段,urlImageField对象的属性。更多信息here,列出项目#3。