上传时的django自定义图像名称

django cutom image name on upload

我需要用 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 }}">

它returns

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

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

您可以指定函数 return 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 }}" />