django cutom图片名称上传

时间:2015-06-08 11:24:28

标签: django image-uploading

我需要用django创建一个图片上传,问题是,django总是保存在一个全局项目(称为linkdump)文件夹中,我希望将它保存在项目文件夹(linktracker)上。

setting.py:

STATIC_URL = '/static/'

模型:

class Link(models.Model):
    link_description = models.CharField(max_length=200)
    link_url = models.CharField(max_length=200)
    link_image = models.ImageField(upload_to= './static/')

    def __str__(self):
        return self.link_description

    class Admin:
        pass

现在在视图中:

<img src="{% static link.link_image %}" alt="{{ link.link_description }}">

它返回

http://127.0.0.1:8000/static/static/o-BLUE-LIGHT-SLEEP-facebook.jpg 

并且上传位于项目文件夹(linkdump)中,而不是在应用内。

1 个答案:

答案 0 :(得分:1)

您可以指定一个函数来返回ImageField的自定义路径:

def get_upload_path(instance, filename):
    return 'your/custom/path/here'

class Link(models.Model):
    . . .
    link_image = models.ImageField(upload_to=get_upload_path)

现在,您可以使用模型实例中的信息来构建上传到的路径。

此外,您不希望使用{%static%}模板标记来指定图像的路径。您只需使用该字段的.url属性:

<img src="{{ link.link_image.url }}" alt="{{ link.link_description }}" />